# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1627054122 0 # Node ID ac51cbdcfbe5cfc44e8fce999ef62fe782e2a1d2 # Parent dbcd9416e9c9a1c87ca55884147a4466f4d4ffb1 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. diff -r dbcd9416e9c9 -r ac51cbdcfbe5 ios/dw.m --- 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; + } } /* diff -r dbcd9416e9c9 -r ac51cbdcfbe5 mac/dw.m --- 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 diff -r dbcd9416e9c9 -r ac51cbdcfbe5 os2/dw.c --- 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 */ diff -r dbcd9416e9c9 -r ac51cbdcfbe5 win/dw.c --- 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; } }