void iupClassRelease(Iclass* ic) { /* must release only the child class */ if (ic->Release) ic->Release(ic); /* attributes functions table is released only on root classes */ if (!ic->parent) iClassReleaseAttribFuncTable(ic); }
void iupClassRelease(Iclass* ic) { Iclass* parent; /* must call Release only for the actual class */ if (ic->Release) ic->Release(ic); /* must free the pointer for all classes, since a new instance is created when we inherit */ parent = ic->parent; while (parent) { Iclass* ic_tmp = parent; parent = parent->parent; free(ic_tmp); } /* attributes functions table is released only once */ iClassReleaseAttribFuncTable(ic); free(ic); }