Tk Source Code

Check-in [b5d8c2e6]
Login

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

Overview
Comment:3567786 Stop segfault in [wm forget]
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: b5d8c2e6ad55edc24e7bbccb09d8ec6d4aa652a3
User & Date: dgp 2012-09-17 13:10:38
References
2016-08-17
15:15 Ticket [3381288f] winWm-9.2 bg error during test status still Open with 7 other changes artifact: c9467315 user: fvogel
Context
2012-09-18
20:45
merge release branch check-in: 6ce9597b user: dgp tags: trunk
2012-09-17
13:12
merge trunk check-in: d38b2f42 user: dgp tags: core-8-6-b3-rc
13:10
3567786 Stop segfault in [wm forget] check-in: b5d8c2e6 user: dgp tags: trunk
2012-09-16
22:36
Updated branch now stops all segfaults and panics in the test suite. Not a lot of confidence that other problems haven't been created, including memleaks and broken functionality in areas. A review would be a good idea. So would a trunk that doesn't segfault the test suite. Closed-Leaf check-in: 0f459361 user: dgp tags: bug-3567786
2012-09-15
13:34
3567778 Make Tk_MeasureChars() honor the TK_AT_LEAST_ONE flag properly. check-in: 3ed51c09 user: dgp tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to macosx/tkMacOSXWm.c.

722
723
724
725
726
727
728



729
730
731
732
733
734
735
    TkWindow *winPtr)		/* Top-level window that's being deleted. */
{
    WmInfo *wmPtr = winPtr->wmInfoPtr, *wmPtr2;

    if (wmPtr == NULL) {
	return;
    }



    if (wmPtr->hints.flags & IconPixmapHint) {
	Tk_FreeBitmap(winPtr->display, wmPtr->hints.icon_pixmap);
    }
    if (wmPtr->hints.flags & IconMaskHint) {
	Tk_FreeBitmap(winPtr->display, wmPtr->hints.icon_mask);
    }
    if (wmPtr->iconName != NULL) {







>
>
>







722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
    TkWindow *winPtr)		/* Top-level window that's being deleted. */
{
    WmInfo *wmPtr = winPtr->wmInfoPtr, *wmPtr2;

    if (wmPtr == NULL) {
	return;
    }
    Tk_ManageGeometry((Tk_Window) winPtr, NULL, NULL);
    Tk_DeleteEventHandler((Tk_Window) winPtr, StructureNotifyMask,
	    TopLevelEventProc, winPtr);
    if (wmPtr->hints.flags & IconPixmapHint) {
	Tk_FreeBitmap(winPtr->display, wmPtr->hints.icon_pixmap);
    }
    if (wmPtr->hints.flags & IconMaskHint) {
	Tk_FreeBitmap(winPtr->display, wmPtr->hints.icon_mask);
    }
    if (wmPtr->iconName != NULL) {
1642
1643
1644
1645
1646
1647
1648
1649





1650
1651
1652




1653
1654
1655
1656
1657
1658
1659
1660
1661
    Tcl_Interp *interp,		/* Current interpreter. */
    int objc,			/* Number of arguments. */
    Tcl_Obj *const objv[])	/* Argument objects. */
{
    register Tk_Window frameWin = (Tk_Window) winPtr;

    if (Tk_IsTopLevel(frameWin)) {
	MacDrawable *macWin = (MacDrawable *) winPtr->parentPtr->window;






    	TkFocusJoin(winPtr);
    	Tk_UnmapWindow(frameWin); 




	TkWmDeadWindow((TkWindow *) macWin);
	RemapWindows(winPtr, macWin);
       
	winPtr->flags &= ~(TK_TOP_HIERARCHY|TK_TOP_LEVEL|TK_HAS_WRAPPER|TK_WIN_MANAGED);

	/*
         * Flags (above) must be cleared before calling TkMapTopFrame (below).
         */








|
>
>
>
>
>



>
>
>
>
|
|







1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
    Tcl_Interp *interp,		/* Current interpreter. */
    int objc,			/* Number of arguments. */
    Tcl_Obj *const objv[])	/* Argument objects. */
{
    register Tk_Window frameWin = (Tk_Window) winPtr;

    if (Tk_IsTopLevel(frameWin)) {
	MacDrawable *macWin;

	Tk_MakeWindowExist(winPtr);
	Tk_MakeWindowExist(winPtr->parentPtr);

	macWin = (MacDrawable *) winPtr->window;

    	TkFocusJoin(winPtr);
    	Tk_UnmapWindow(frameWin); 

	macWin->toplevel = winPtr->parentPtr->privatePtr->toplevel;
	macWin->flags &= ~TK_HOST_EXISTS;

	TkWmDeadWindow(winPtr);
	RemapWindows(winPtr, (MacDrawable *) winPtr->parentPtr->window);
       
	winPtr->flags &= ~(TK_TOP_HIERARCHY|TK_TOP_LEVEL|TK_HAS_WRAPPER|TK_WIN_MANAGED);

	/*
         * Flags (above) must be cleared before calling TkMapTopFrame (below).
         */