Tk Source Code

Check-in [144f43dc]
Login

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

Overview
Comment:Correct fix for secondary crash, scheduled idletasks for deleted containers must be canceled since the clientData has been deallocated.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | bug-5412c64a79
Files: files | file ages | folders
SHA3-256: 144f43dccd57434a59dbe380d17b77480307210bc676e82d134f9b950327b4e2
User & Date: griffin 2022-03-14 04:21:23.048
Original Comment: Corret fix for secondary crash, scheduled idletasks for deleted containers must be cancled since the clientData has been deallocated.
References
2022-03-14
07:16 Ticket [5412c64a] Segmentation fault on closing error report window status still Open with 3 other changes artifact: 0bec393d user: fvogel
Context
2022-03-14
07:12
Refine Brian's fix for pack, and propagate it to grid and place. check-in: df2353f2 user: fvogel tags: bug-5412c64a79
04:21
Correct fix for secondary crash, scheduled idletasks for deleted containers must be canceled since the clientData has been deallocated. check-in: 144f43dc user: griffin tags: bug-5412c64a79
2022-03-13
09:23
Backout [14bdca4d]. This fix is no longer needed since previous commit. Moreover there was a missing Tcl_Release call before returning. check-in: 21d35eaa user: fvogel tags: bug-5412c64a79
Changes
Unified Diff Ignore Whitespace Patch
Changes to generic/tkPack.c.
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658

    width = maxWidth = Tk_InternalBorderLeft(containerPtr->tkwin) +
	    Tk_InternalBorderRight(containerPtr->tkwin);
    height = maxHeight = Tk_InternalBorderTop(containerPtr->tkwin) +
	    Tk_InternalBorderBottom(containerPtr->tkwin);
    for (contentPtr = containerPtr->contentPtr; contentPtr != NULL;
	    contentPtr = contentPtr->nextPtr) {
	if (contentPtr == (Packer*)-1) {
	    if (containerPtr->abortPtr != NULL) {
		*containerPtr->abortPtr = 1;
	    }
	    goto done;
	}
	if ((contentPtr->side == TOP) || (contentPtr->side == BOTTOM)) {
	    tmp = Tk_ReqWidth(contentPtr->tkwin) + contentPtr->doubleBw
		    + contentPtr->padX + contentPtr->iPadX + width;
	    if (tmp > maxWidth) {
		maxWidth = tmp;
	    }
	    height += Tk_ReqHeight(contentPtr->tkwin) + contentPtr->doubleBw







<
<
<
<
<
<







639
640
641
642
643
644
645






646
647
648
649
650
651
652

    width = maxWidth = Tk_InternalBorderLeft(containerPtr->tkwin) +
	    Tk_InternalBorderRight(containerPtr->tkwin);
    height = maxHeight = Tk_InternalBorderTop(containerPtr->tkwin) +
	    Tk_InternalBorderBottom(containerPtr->tkwin);
    for (contentPtr = containerPtr->contentPtr; contentPtr != NULL;
	    contentPtr = contentPtr->nextPtr) {






	if ((contentPtr->side == TOP) || (contentPtr->side == BOTTOM)) {
	    tmp = Tk_ReqWidth(contentPtr->tkwin) + contentPtr->doubleBw
		    + contentPtr->padX + contentPtr->iPadX + width;
	    if (tmp > maxWidth) {
		maxWidth = tmp;
	    }
	    height += Tk_ReqHeight(contentPtr->tkwin) + contentPtr->doubleBw
1396
1397
1398
1399
1400
1401
1402

1403
1404
1405
1406
1407
1408
1409
static void
DestroyPacker(
    void *memPtr)		/* Info about packed window that is now
				 * dead. */
{
    Packer *packPtr = (Packer *)memPtr;


    ckfree(packPtr);
}

/*
 *----------------------------------------------------------------------
 *
 * PackStructureProc --







>







1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
static void
DestroyPacker(
    void *memPtr)		/* Info about packed window that is now
				 * dead. */
{
    Packer *packPtr = (Packer *)memPtr;

    Tcl_CancelIdleCall(ArrangePacking, packPtr);
    ckfree(packPtr);
}

/*
 *----------------------------------------------------------------------
 *
 * PackStructureProc --