De: Antonio Scuri <[email protected]>
Enviado: sexta-feira, 29 de maio de 2020 13:12
Para: IUP discussion list.
Assunto: Re: [Iup-users] IUP iupDlgListDestroyAll refactored
> Because IupDestroy will also remove the dialog from that list and list->next
> will be invalid.
Like this, it worked without problems.
void iupDlgListDestroyAll(void)
{
int i, count = 0;
Ihandle** ih_array = (Ihandle**)malloc(idlg_count * sizeof(Ihandle*));
Idiallst *list;
for (list = idlglist; list; list = list->next)
{
if (iupObjectCheck(list->ih))
{
ih_array[count] = list->ih;
++count;
}
}
for (i = 0; i < count; ++i)
{
IupDestroy(ih_array[i]); /* this will also destroy the list */
}
free(ih_array);
}
Advantagens:
1. Avoid assign variable count with i value;
2. Avoid call iupObjectCheck for every ih_array[i], since they have all been
verified.
regards,
Ranier Vilela
_______________________________________________
Iup-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/iup-users