Tk Source Code

Check-in [22a6a821]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:[Bug 3291543] There was a crash if dchars removed all coordinates of a polygon.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core-8-4-branch
Files: files | file ages | folders
SHA1: 22a6a821eee475ce38da9a624652edff123f8a70
User & Date: pspjuth 2011-04-22 18:17:47
Context
2011-06-06
21:56
Restore proper NUL output to the [console]. [Bug 2546087] check-in: 4a36ca25 user: dgp tags: core-8-4-branch
2011-04-22
18:21
[Bug 3291543] There was a crash if dchars removed all coordinates of a polygon. check-in: 7262cbf0 user: pspjuth tags: core-8-5-branch
18:17
[Bug 3291543] There was a crash if dchars removed all coordinates of a polygon. check-in: 22a6a821 user: pspjuth tags: core-8-4-branch
2011-04-21
21:01
Document all variable options as global. check-in: 6242f06c user: pspjuth tags: core-8-4-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.






1
2
3
4
5
6
7





2011-04-21  Peter Spjuth  <[email protected]>

	* doc/checkbutton.n: Document all variable options as global.
	* doc/radiobutton.n:
	* doc/listbox.n:
	* doc/menu.n:
	* doc/options.n:
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
2011-04-22  Peter Spjuth  <[email protected]>

	* generic/tkCanvPoly.c: [Bug 3291543] There was a crash if dchars
	* tests/canvas.test:    removed all coordinates of a polygon.

2011-04-21  Peter Spjuth  <[email protected]>

	* doc/checkbutton.n: Document all variable options as global.
	* doc/radiobutton.n:
	* doc/listbox.n:
	* doc/menu.n:
	* doc/options.n:

Changes to generic/tkCanvPoly.c.

1183
1184
1185
1186
1187
1188
1189

1190
1191
1192
1193
1194
1195
1196
    count = last + 2 - first;
    if(count<=0) count +=length;

    if(count >= length) {
	polyPtr->numPoints = 0;
	if(polyPtr->coordPtr != NULL) {
	    ckfree((char *) polyPtr->coordPtr);

	}
	ComputePolygonBbox(canvas, polyPtr);
	return;
    }

    if(last>=first) {
	for(i=last+2; i<length; i++) {







>







1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
    count = last + 2 - first;
    if(count<=0) count +=length;

    if(count >= length) {
	polyPtr->numPoints = 0;
	if(polyPtr->coordPtr != NULL) {
	    ckfree((char *) polyPtr->coordPtr);
	    polyPtr->coordPtr = NULL;
	}
	ComputePolygonBbox(canvas, polyPtr);
	return;
    }

    if(last>=first) {
	for(i=last+2; i<length; i++) {

Changes to tests/canvas.test.

378
379
380
381
382
383
384








385
386
387
388
389
390
391
    lappend result [.c find over 60 40 60 40]; # top-center point
    lappend result [.c find over 0 0 0 0]; # not on poly
    lappend result [.c find over 60 60 60 60]; # center-point
    lappend result [.c find over 45 50 45 50]; # outside poly
    .c itemconfig 1 -width 8
    lappend result [.c find over 45 50 45 50]; # outside poly
} {1 1 {} 1 {} 1 1 {} 1 {} 1}









test canvas-12.1 {canvas mm obj, patch SF-403327, 102471} {
    destroy .c
    pack [canvas .c]
    set qx [expr {1.+1.}] 
    # qx has type double and no string representation 
    .c scale all $qx 0 1. 1.







>
>
>
>
>
>
>
>







378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
    lappend result [.c find over 60 40 60 40]; # top-center point
    lappend result [.c find over 0 0 0 0]; # not on poly
    lappend result [.c find over 60 60 60 60]; # center-point
    lappend result [.c find over 45 50 45 50]; # outside poly
    .c itemconfig 1 -width 8
    lappend result [.c find over 45 50 45 50]; # outside poly
} {1 1 {} 1 {} 1 1 {} 1 {} 1}
test canvas-11.3 {canvas poly dchars, bug 3291543} {
    # This would crash
    destroy .c
    pack [canvas .c]
    .c create polygon 0 0 0 10 10 0
    .c dchars 1 2 end
    .c coords 1
} {}

test canvas-12.1 {canvas mm obj, patch SF-403327, 102471} {
    destroy .c
    pack [canvas .c]
    set qx [expr {1.+1.}] 
    # qx has type double and no string representation 
    .c scale all $qx 0 1. 1.