Scicos sources: fix model2blk 28/16528/5
Paul Bignier [Fri, 29 May 2015 09:10:06 +0000 (11:10 +0200)]
 * 'inptr' does the same memset as 'outptr'
 * 'ipar' (properly) uses 'nipar' instead of 'nrpar', which was for 'rpar'
 * Tested by "xcos/tests/unit_tests/blocks_link.tst" (used to segfault out),
although the test is excrutiatingly slow

Change-Id: I518f0f43bcbf310e7e73e82862013c6c4cc5e35f

scilab/modules/scicos/sci_gateway/cpp/sci_model2blk.cpp

index 0866188..670651d 100644 (file)
@@ -483,7 +483,7 @@ types::Function::ReturnValue sci_model2blk(types::typed_list &in, int _iRetCount
                 return types::Function::Error;
             }
 
-            memset(Block.inptr, 0x00, size);
+            memset(Block.inptr[i], 0x00, size);
         }
     }
 
@@ -934,9 +934,9 @@ types::Function::ReturnValue sci_model2blk(types::typed_list &in, int _iRetCount
     d = pIT->getAs<types::Double>();
     Block.nipar = d->getSize();
     Block.ipar = nullptr;
-    if (Block.nrpar > 0)
+    if (Block.nipar > 0)
     {
-        if ((Block.ipar = (int *)MALLOC(Block.nrpar * sizeof(int))) == nullptr)
+        if ((Block.ipar = (int *)MALLOC(Block.nipar * sizeof(int))) == nullptr)
         {
             freeBlock(&Block);
             Scierror(888, _("%s : Allocation error.\n"), name.data());
@@ -944,7 +944,7 @@ types::Function::ReturnValue sci_model2blk(types::typed_list &in, int _iRetCount
         }
 
         const double* const r = d->get();
-        for (int j = 0; j < Block.nrpar; j++)
+        for (int j = 0; j < Block.nipar; j++)
         {
             Block.ipar[j] = static_cast<int>(r[j]);
         }