From a005af2cae512fc901d06236dc97190523de6bb5 Mon Sep 17 00:00:00 2001
From: hypnotoad <yoda@etoyoc.com>
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 <yoda@etoyoc.com>
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 <yoda@etoyoc.com>
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 <yoda@etoyoc.com>
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 <yoda@etoyoc.com>
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