CovertyFix CID:1373272-CID:1373273-Memory-corruptions-Double free/Used proper API... 18/19618/8
Nimish Kapoor [Thu, 14 Dec 2017 19:10:04 +0000 (00:10 +0530)]
Change-Id: I13f609c7e8b5e36562cdd4627cd4ae36f33ae545

scilab/modules/gui/sci_gateway/cpp/sci_uigetdir.cpp

index 5443253..be7925a 100644 (file)
@@ -113,13 +113,10 @@ int sci_uigetdir(char *fname, void* pvApiCtx)
             /* Initial path is given */
             case 1:
                 CallJuigetfileForDirectoryWithInitialdirectory(expandedpath);
-                FREE(expandedpath);
                 break;
             /* Initial path and title are given */
             case 2:
                 CallJuigetfileForDirectoryWithInitialdirectoryAndTitle(expandedpath, title);
-                FREE(expandedpath);
-                freeAllocatedSingleString(title);
                 break;
             /* Default call with default path and title */
             default:
@@ -127,6 +124,9 @@ int sci_uigetdir(char *fname, void* pvApiCtx)
                 break;
         }
 
+        freeAllocatedSingleString(title);
+        FREE(expandedpath);
+
         /* Read the size of the selection, if 0 then no file selected */
         nbRow = getJuigetfileSelectionSize();
         /* Read the selection */
@@ -135,27 +135,18 @@ int sci_uigetdir(char *fname, void* pvApiCtx)
     catch (const GiwsException::JniCallMethodException & exception)
     {
         FREE(expandedpath);
-        FREE(title);
+        freeAllocatedSingleString(title);
         Scierror(999, "%s: %s\n", fname, exception.getJavaDescription().c_str());
         return 1;
     }
     catch (const GiwsException::JniException & e)
     {
         FREE(expandedpath);
-        FREE(title);
+        freeAllocatedSingleString(title);
         Scierror(999, _("%s: A Java exception arisen:\n%s"), fname, e.whatStr().c_str());
         return 1;
     }
 
-    if (expandedpath)
-    {
-        FREE(expandedpath);
-    }
-    if (title)
-    {
-        FREE(title);
-    }
-
     if (nbRow != 0)
     {
         /* The user selected a file --> returns the files names */