--- rpl/modules/motif/motif.rplc 2017/07/11 16:04:53 1.5 +++ rpl/modules/motif/motif.rplc 2017/07/17 21:35:32 1.6 @@ -15,7 +15,8 @@ exportExternalFunctions( XtDestroyWidget, XtPopdown, XtPopup, - XtRealizeWidget); + XtRealizeWidget, + XtRemoveCallback); declareSubroutine(onLoading) notice(stdout, "\nMotif library V2R1 for RPL/2 (C) 2017 BERTRAND Joel\n"); @@ -65,12 +66,27 @@ declareSubroutine(onLoading) createVariable(XmSTRING); setFalse(initializationDone); - lCallbacks = NULL; + nullify(lCallbacks); endSubroutine declareSubroutine(onClosing) // Destruction des variables spécifiques declareObject(variable); + declareDaisyChain(current); + declareDaisyChain(next); + + current = lCallbacks; + + repeatWhile(not nullified(current)) + next = current; + nextElementOfDaisyChain(next); + variable = fetchElementFromDaisyChain(current); + freeObject(variable); + free(current); + current = next; + endWhile + + nullify(lCallbacks); #define purgeVariable(var) \ do { \