diff --git a/src/cosimulation.c b/src/cosimulation.c index a43c66d3..689851a4 100644 --- a/src/cosimulation.c +++ b/src/cosimulation.c @@ -104,7 +104,13 @@ ModelInstance *createModelInstance( } void freeModelInstance(ModelInstance *comp) { - free((void *)comp->instanceName); + + if (!comp) return; + + if (comp->instanceName) free((void*)comp->instanceName); + + if (comp->resourceLocation) free((void*)comp->resourceLocation); + free(comp); } diff --git a/src/fmi1Functions.c b/src/fmi1Functions.c index e5ce6631..3f7d8006 100644 --- a/src/fmi1Functions.c +++ b/src/fmi1Functions.c @@ -243,8 +243,7 @@ fmiStatus fmiResetSlave(fmiComponent c) { } void fmiFreeSlaveInstance(fmiComponent c) { - ModelInstance *instance = (ModelInstance *)c; - freeModelInstance(instance); + freeModelInstance((ModelInstance*)c); } fmiStatus fmiSetRealInputDerivatives(fmiComponent c, const fmiValueReference vr[], size_t nvr, @@ -588,8 +587,7 @@ fmiStatus fmiTerminate(fmiComponent c){ } void fmiFreeModelInstance(fmiComponent c) { - ModelInstance *instance = (ModelInstance *)c; - freeModelInstance(instance); + freeModelInstance((ModelInstance*)c); } #endif // Model Exchange 1.0 diff --git a/src/fmi2Functions.c b/src/fmi2Functions.c index 92cddc66..98c4a5f6 100644 --- a/src/fmi2Functions.c +++ b/src/fmi2Functions.c @@ -299,10 +299,7 @@ fmi2Status fmi2Reset(fmi2Component c) { } void fmi2FreeInstance(fmi2Component c) { - - if (S) { - freeModelInstance(S); - } + freeModelInstance((ModelInstance*)S); } // --------------------------------------------------------------------------- diff --git a/src/fmi3Functions.c b/src/fmi3Functions.c index a26ed4d1..364bd49c 100644 --- a/src/fmi3Functions.c +++ b/src/fmi3Functions.c @@ -374,11 +374,7 @@ fmi3Instance fmi3InstantiateScheduledExecution( #endif } - void fmi3FreeInstance(fmi3Instance instance) { - - if (!instance) return; - freeModelInstance((ModelInstance*)instance); }