CovertyFix-CID:1366841,CID:1366842 Resource Leak 32/20932/1
Nimish Kapoor [Sat, 28 Apr 2018 18:12:17 +0000 (23:12 +0530)]
Change-Id: I4ccd41eb231c210a7500d354e8eeb51260a3b729

scilab/modules/api_scilab/src/cpp/api_stack_boolean_sparse.cpp

index 2e9fa1e..60054dc 100644 (file)
@@ -61,17 +61,24 @@ SciErr getBooleanSparseMatrix(void* _pvCtx, int* _piAddress, int* _piRows, int*
     types::SparseBool* pSpBool = ((types::InternalType*)_piAddress)->getAs<types::SparseBool>();
     *_piNbItem = (int)pSpBool->nbTrue();
 
-    if (!sciErr.iErr && _piNbItemRow != NULL)
+    if (_piNbItemRow == NULL)
     {
-        int* piNbItemRows = (int*)MALLOC(sizeof(int) **_piRows);
-        *_piNbItemRow = pSpBool->getNbItemByRow(piNbItemRows);
+        return sciErr;
     }
-    if (!sciErr.iErr && _piColPos != NULL)
+
+    //WARNING: leak memory, caller must free pointer
+    int* piNbItemRows = (int*)MALLOC(sizeof(int) **_piRows);
+    *_piNbItemRow = pSpBool->getNbItemByRow(piNbItemRows);
+
+    if (_piColPos == NULL)
     {
-        int* piColPos = (int*)MALLOC(sizeof(int) **_piNbItem);
-        *_piColPos = pSpBool->getColPos(piColPos);
+        return sciErr;
     }
 
+    //WARNING: leak memory, caller must free pointer
+    int* piColPos = (int*)MALLOC(sizeof(int) **_piNbItem);
+    *_piColPos = pSpBool->getColPos(piColPos);
+
     return sciErr;
 }