[differential_equations] valgrind error in ode test fixed 92/18892/2
Cedric Delamarre [Tue, 17 Jan 2017 15:59:49 +0000 (16:59 +0100)]
  test_run differential_equations ode
  test_run differential_equations ode mode_nwni_profiling

Change-Id: Ic36eb2326793b9fdbb41dcdb3e3342b7042729f1

scilab/modules/differential_equations/sci_gateway/cpp/sci_ode.cpp
scilab/modules/differential_equations/src/fortran/xerrwv.f
scilab/modules/differential_equations/tests/unit_tests/ode.unix.dia.ref
scilab/modules/differential_equations/tests/unit_tests/ode.win.dia.ref

index d177bdb..2efc32a 100644 (file)
@@ -1360,6 +1360,8 @@ types::Function::ReturnValue sci_ode(types::typed_list &in, int _iRetCount, type
                     FREE(rtol);
                 }
 
+                delete pDblYOut;
+
                 if (bCatch)
                 {
                     wchar_t szError[bsiz];
index 5a4b9e4..aa0deaf 100644 (file)
@@ -60,6 +60,7 @@ cDEC$ ATTRIBUTES DLLIMPORT:: /eh0001/
       common /eh0001/ mesflg, lunit
       integer num, imess, imode
       character*80 str
+      imode = 0
 c-----------------------------------------------------------------------
       if (mesflg .eq. 0) go to 100
 c get logical unit number. ---------------------------------------------
index c12a0ff..157aabe 100644 (file)
@@ -310,8 +310,13 @@ assert_checkalmostequal(rd1(1), 2.64d-01, 1d-4);
 [yout2,rd2,w,iw] = ode("root", y, t0, tout, "fex1", 2, "gex", w, iw);
 assert_checkalmostequal(rd2(1), 2.0795776d+07, 4d-5);
 err = execstr("[yout3,rd,w,iw] = ode(""root"", y, t0, tout, ""fex1"", 2, ""gex"", w, iw);","errcatch");
+intdy--  t (=r1) illegal      
+      where r1 is :   0.4000000000000D+00                                       
       t n est pas entre tcur - hu (= r1) et tcur (=r2)
       where r1 is :   0.2033607066275D+08   and r2 :   0.2109164231072D+08      
+lsodar-  trouble from intdy. itask = i1, tout = r1
+      where i1 is :          1                                                  
+      where r1 is :   0.4000000000000D+00                                       
 Illegal input detected (see printed message).
 assert_checkequal( err == 0 , %f);
 // check results
index ab4d02e..2ea4b03 100644 (file)
@@ -313,7 +313,10 @@ err = execstr("[yout3,rd,w,iw] = ode(""root"", y, t0, tout, ""fex1"", 2, ""gex""
 intdy--  t (=r1) illegal      
       where r1 is :   0.4000000000000D+00                                       
       t n est pas entre tcur - hu (= r1) et tcur (=r2)
-      where r1 is :   0.2033607066275D+08   and r2 :   0.2109164231072D+08      
+      where r1 is :   0.2012809069511D+08   and r2 :   0.2087425106905D+08      
+lsodar-  trouble from intdy. itask = i1, tout = r1
+      where i1 is :          1                                                  
+      where r1 is :   0.4000000000000D+00                                       
 Illegal input detected (see printed message).
 assert_checkequal( err == 0 , %f);
 // check results