Hi,
Take a look in this version:
--- a\src\iup_dlglist.c Tue Feb 13 10:05:14 2018
+++ b\src\iup_dlglist.c Tue Feb 20 09:48:43 2018
@@ -112,24 +112,14 @@
void iupDlgListDestroyAll(void)
{
- int i = 0, count;
- Ihandle** ih_array = (Ihandle**)malloc(idlg_count * sizeof(Ihandle*));
Idiallst *list;
- for (list = idlglist; list; list = list->next)
- {
- if (iupObjectCheck(list->ih))
- {
- ih_array[i] = list->ih;
- i++;
- }
- }
+ Idiallst *next;
- count = i;
- for (i = 0; i < count; i++)
+ list = idlglist;
+ while(list)
{
- if (iupObjectCheck(ih_array[i]))
- IupDestroy(ih_array[i]); /* this will also destroy the list */
+ next = list->next; /* Save next item, IupDestroy may can free
list->next */
+ IupDestroy(list->ih); /* iupObjectCheck is called in IupDestroy */
+ list = next;
}
-
- free(ih_array);
}
list->next is preseved in case IupDestroy invalidate.
Best regards,
Ranier Vilela
________________________________________
De: Antonio Scuri <[email protected]>
Enviado: segunda-feira, 19 de fevereiro de 2018 19:37
Para: IUP discussion list.
Assunto: Re: [Iup-users] iupDlgListDestroyAll optimized version
Yes, because when a dialog is destroyed the idlglist list is updated, so
list->next will be invalid.
Best,
Scuri
2018-02-13 11:13 GMT-02:00 Ranier VF
<[email protected]<mailto:[email protected]>>:
Hi,
Is there really any special reason, for what
iupDlgListDestroyAll do not be like that?
--- a\src\iup_dlglist.c Tue Feb 13 11:05:14 2018
+++ b\src\iup_dlglist.c Tue Feb 13 11:11:25 2018
@@ -112,24 +112,9 @@
void iupDlgListDestroyAll(void)
{
- int i = 0, count;
- Ihandle** ih_array = (Ihandle**)malloc(idlg_count * sizeof(Ihandle*));
Idiallst *list;
for (list = idlglist; list; list = list->next)
{
- if (iupObjectCheck(list->ih))
- {
- ih_array[i] = list->ih;
- i++;
- }
+ IupDestroy(list->ih); /* iupObjectCheck is called in IupDestroy */
}
-
- count = i;
- for (i = 0; i < count; i++)
- {
- if (iupObjectCheck(ih_array[i]))
- IupDestroy(ih_array[i]); /* this will also destroy the list */
- }
-
- free(ih_array);
}
Best regards,
Ranier Vilela
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Iup-users mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/iup-users
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Iup-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/iup-users