diff dmengine.c @ 369:e1c984404b6b

Re-entrancy.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 17 Oct 2012 00:23:36 +0300
parents 08ea68abb1f8
children a7ee3567f718
line wrap: on
line diff
--- a/dmengine.c	Wed Oct 17 00:01:46 2012 +0300
+++ b/dmengine.c	Wed Oct 17 00:23:36 2012 +0300
@@ -53,7 +53,7 @@
     for (i = 0; i < nengineEffects; i++)
     {
         if (engineEffects[i].init != NULL &&
-            (res = engineEffects[i].init(engine, &engine->effectData[i])) != DMERR_OK)
+            (res = engineEffects[i].init(engine, &(engine->effectData[i]))) != DMERR_OK)
             return res;
     }
 
@@ -63,14 +63,17 @@
 
 void engineShutdownEffects(DMEngineData *engine)
 {
-    int i;
-    for (i = 0; i < nengineEffects; i++)
+    if (engine != NULL && engine->effectData != NULL)
     {
-        if (engineEffects[i].shutdown != NULL)
-            engineEffects[i].shutdown(engine, engine->effectData[i]);
+        int i;
+        for (i = 0; i < nengineEffects; i++)
+        {
+            if (engineEffects[i].shutdown != NULL)
+                engineEffects[i].shutdown(engine, engine->effectData[i]);
+        }
+        dmFree(engine->effectData);
+        engine->effectData = NULL;
     }
-    dmFree(engine->effectData);
-    engine->effectData = NULL;
 }