changeset 2615:ac51cbdcfbe5

dw_menu_destroy() should zero out the handle passed, GTK does this already. Also check the pointer is valid before using it in Mac and iOS.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 23 Jul 2021 15:28:42 +0000
parents dbcd9416e9c9
children a256caa5034c
files ios/dw.m mac/dw.m os2/dw.c win/dw.c
diffstat 4 files changed, 20 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/ios/dw.m	Fri Jul 23 14:52:32 2021 +0000
+++ b/ios/dw.m	Fri Jul 23 15:28:42 2021 +0000
@@ -7641,10 +7641,14 @@
  */
 void API dw_menu_destroy(HMENUI *menu)
 {
-    DWMenu *thismenu = *menu;
-    DW_LOCAL_POOL_IN;
-    [thismenu release];
-    DW_LOCAL_POOL_OUT;
+    if(menu)
+    {
+        DWMenu *thismenu = *menu;
+        DW_LOCAL_POOL_IN;
+        [thismenu release];
+        DW_LOCAL_POOL_OUT;
+        *menu = NULL;
+    }
 }
 
 /*
--- a/mac/dw.m	Fri Jul 23 14:52:32 2021 +0000
+++ b/mac/dw.m	Fri Jul 23 15:28:42 2021 +0000
@@ -9386,10 +9386,14 @@
  */
 void API dw_menu_destroy(HMENUI *menu)
 {
-    NSMenu *thismenu = *menu;
-    DW_LOCAL_POOL_IN;
-    [thismenu release];
-    DW_LOCAL_POOL_OUT;
+    if(menu)
+    {
+        NSMenu *thismenu = *menu;
+        DW_LOCAL_POOL_IN;
+        [thismenu release];
+        DW_LOCAL_POOL_OUT;
+        *menu = NULL;
+    }
 }
 
 /* Handle deprecation of convertScreenToBase in 10.10 yet still supporting
--- a/os2/dw.c	Fri Jul 23 14:52:32 2021 +0000
+++ b/os2/dw.c	Fri Jul 23 15:28:42 2021 +0000
@@ -6055,7 +6055,10 @@
 void API dw_menu_destroy(HMENUI *menu)
 {
    if(menu)
+   {
       WinDestroyWindow(*menu);
+      *menu = 0;
+   }
 }
 
 /* Internal function to make sure menu ID isn't in use */
--- a/win/dw.c	Fri Jul 23 14:52:32 2021 +0000
+++ b/win/dw.c	Fri Jul 23 15:28:42 2021 +0000
@@ -6484,6 +6484,7 @@
       }
       if(IsMenu(mymenu))
          DestroyMenu(mymenu);
+      *menu = NULL;
    }
 }