Xcos: fix a memleak merge issue 01/17201/3
Clément DAVID [Mon, 14 Sep 2015 06:53:32 +0000 (08:53 +0200)]
Change-Id: Id31253332a116dcdb1246bfe49fe259e711652d1

scilab/modules/xcos/sci_gateway/cpp/sci_Xcos.cpp

index 6f2214b..afb7c63 100644 (file)
@@ -80,8 +80,10 @@ types::Function::ReturnValue sci_Xcos(types::typed_list &in, int _iRetCount, typ
             }
             if (callXcos(funname, file, ScicosID()))
             {
+                FREE(file);
                 return types::Function::Error;
             }
+            FREE(file);
         }
 
         return types::Function::OK;
@@ -136,18 +138,19 @@ types::Function::ReturnValue sci_Xcos(types::typed_list &in, int _iRetCount, typ
 
         char* c_str = wide_string_to_UTF8(in[0]->getAs<types::String>()->get(0));
         char* file = getFullFilename(c_str);
+        FREE(c_str);
         if (file == nullptr)
         {
-            FREE(c_str);
             return types::Function::Error;
         }
 
-        if (callXcos(funname, c_str, static_cast<long>(o->id())))
+        if (callXcos(funname, file, o->id()))
         {
-            FREE(c_str);
+            FREE(file);
             return types::Function::Error;
         }
-        FREE(c_str);
+
+        FREE(file);
         return types::Function::OK;
     }
     /*
@@ -174,11 +177,6 @@ static int callXcos(char *fname, char* file, long diagramId)
 
         Scierror(999, "%s: %s\n", fname,
                  exception.getJavaDescription().c_str());
-
-        if (file)
-        {
-            FREE(file);
-        }
         return 1;
     }
     catch (GiwsException::JniException &exception)
@@ -188,18 +186,8 @@ static int callXcos(char *fname, char* file, long diagramId)
         std::cerr << exception.getJavaStackTrace() << std::endl;
 
         Scierror(999, "%s: %s\n", fname, exception.whatStr().c_str());
-
-        if (file)
-        {
-            FREE(file);
-        }
         return 1;
     }
-
-    if (file)
-    {
-        FREE(file);
-    }
     return 0;
 }