From a005af2cae512fc901d06236dc97190523de6bb5 Mon Sep 17 00:00:00 2001 From: hypnotoad Date: Wed, 27 Aug 2014 13:07:52 +0000 Subject: Fix for segfaults induced by the following script: button .b pack .b update destroy .b button .c update --- macosx/tkMacOSXButton.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/macosx/tkMacOSXButton.c b/macosx/tkMacOSXButton.c index dd4cca7..9250884 100644 --- a/macosx/tkMacOSXButton.c +++ b/macosx/tkMacOSXButton.c @@ -379,6 +379,9 @@ NSRect TkMacOSXGetButtonFrame( if (tkwin) { MacDrawable *macWin = (MacDrawable *) winPtr->window; NSView *view = TkMacOSXDrawableView(macWin); + if(view==nil) { + return NSZeroRect; + } CGFloat viewHeight = [view bounds].size.height; NSRect frame = NSMakeRect(macWin->xOff, macWin->yOff, Tk_Width(tkwin), Tk_Height(tkwin)); -- cgit v0.12 From 6f94865121c05acf2559f1edbd66914b04d9b189 Mon Sep 17 00:00:00 2001 From: hypnotoad Date: Wed, 27 Aug 2014 14:17:16 +0000 Subject: dgp's constant comparison fix --- macosx/tkMacOSXButton.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/macosx/tkMacOSXButton.c b/macosx/tkMacOSXButton.c index 9250884..bd5cedd 100644 --- a/macosx/tkMacOSXButton.c +++ b/macosx/tkMacOSXButton.c @@ -376,6 +376,9 @@ NSRect TkMacOSXGetButtonFrame( MacButton *macButtonPtr = (MacButton *) butPtr; Tk_Window tkwin = butPtr->tkwin; TkWindow *winPtr = (TkWindow *) tkwin; + if(tkwin==0xffffffff || tkwin==0xffffffff00000000) { + return NSZeroRect; + } if (tkwin) { MacDrawable *macWin = (MacDrawable *) winPtr->window; NSView *view = TkMacOSXDrawableView(macWin); -- cgit v0.12 From f519c380a7f8158faeaa67fc154cef64f4ac9a8e Mon Sep 17 00:00:00 2001 From: hypnotoad Date: Wed, 27 Aug 2014 14:22:55 +0000 Subject: An improvement on before --- macosx/tkMacOSXButton.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/macosx/tkMacOSXButton.c b/macosx/tkMacOSXButton.c index bd5cedd..4e7904c 100644 --- a/macosx/tkMacOSXButton.c +++ b/macosx/tkMacOSXButton.c @@ -375,8 +375,9 @@ NSRect TkMacOSXGetButtonFrame( { MacButton *macButtonPtr = (MacButton *) butPtr; Tk_Window tkwin = butPtr->tkwin; + unsigned short tkwint=(unsigned int)tkwin; TkWindow *winPtr = (TkWindow *) tkwin; - if(tkwin==0xffffffff || tkwin==0xffffffff00000000) { + if(tkwint==0xffffffff || tkwint==0) { return NSZeroRect; } if (tkwin) { -- cgit v0.12 From 94cd41bca17091f9de05687ef4cc17e70316238a Mon Sep 17 00:00:00 2001 From: hypnotoad Date: Wed, 27 Aug 2014 14:52:58 +0000 Subject: Fix from kevin_walzer for buttons in cocoa --- macosx/tkMacOSXButton.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/macosx/tkMacOSXButton.c b/macosx/tkMacOSXButton.c index 4e7904c..9858f88 100644 --- a/macosx/tkMacOSXButton.c +++ b/macosx/tkMacOSXButton.c @@ -186,6 +186,7 @@ TkpDestroyButton( TkButton *butPtr) { MacButton *macButtonPtr = (MacButton *) butPtr; + [macButtonPtr->button setTag:(NSInteger)-1]; TkMacOSXMakeCollectableAndRelease(macButtonPtr->button); TkMacOSXMakeCollectableAndRelease(macButtonPtr->selectImage); @@ -375,17 +376,10 @@ NSRect TkMacOSXGetButtonFrame( { MacButton *macButtonPtr = (MacButton *) butPtr; Tk_Window tkwin = butPtr->tkwin; - unsigned short tkwint=(unsigned int)tkwin; TkWindow *winPtr = (TkWindow *) tkwin; - if(tkwint==0xffffffff || tkwint==0) { - return NSZeroRect; - } if (tkwin) { MacDrawable *macWin = (MacDrawable *) winPtr->window; NSView *view = TkMacOSXDrawableView(macWin); - if(view==nil) { - return NSZeroRect; - } CGFloat viewHeight = [view bounds].size.height; NSRect frame = NSMakeRect(macWin->xOff, macWin->yOff, Tk_Width(tkwin), Tk_Height(tkwin)); -- cgit v0.12 From b5f3290552fc8c5b9c0db94e85bf8aaf4ec6e5ed Mon Sep 17 00:00:00 2001 From: hypnotoad Date: Wed, 27 Aug 2014 15:10:51 +0000 Subject: Apply a similar dealloc fix to menubutton --- macosx/tkMacOSXMenubutton.c | 1 + 1 file changed, 1 insertion(+) diff --git a/macosx/tkMacOSXMenubutton.c b/macosx/tkMacOSXMenubutton.c index d6e635a..df42763 100644 --- a/macosx/tkMacOSXMenubutton.c +++ b/macosx/tkMacOSXMenubutton.c @@ -116,6 +116,7 @@ TkpDestroyMenuButton( TkMenuButton *mbPtr) { MacMenuButton *macButtonPtr = (MacMenuButton *) mbPtr; + [macButtonPtr->button setTag:(NSInteger)-1]; TkMacOSXMakeCollectableAndRelease(macButtonPtr->button); } -- cgit v0.12