* Bug #12551 fixed - Stack problem with diary([],"pause") and diary([],"resume"). 77/11277/2
Charlotte HECQUET [Mon, 15 Apr 2013 13:19:25 +0000 (15:19 +0200)]
Change-Id: I6c30a8811c453807a8df6b53223ee00187cb57e0

scilab/CHANGES_5.5.X
scilab/modules/output_stream/sci_gateway/cpp/sci_diary.cpp
scilab/modules/output_stream/tests/nonreg_tests/bug_12551.dia.ref [new file with mode: 0644]
scilab/modules/output_stream/tests/nonreg_tests/bug_12551.tst [new file with mode: 0644]

index 5fa939b..70d67a1 100644 (file)
@@ -135,4 +135,6 @@ Bug fixes
 
 * Bug #12548 fixed - Duplicated code in xmltoformat.
 
+* Bug #12551 fixed - Stack problem with diary([],"pause") and diary([],"resume") fixed.
+
 * Bug #12564 fixed - Javasci compile & run help page is not clear about needed packages.
index 4d47283..f2108db 100644 (file)
@@ -1133,7 +1133,14 @@ static int PauseByIds(char *fname)
     int ierr = 0;
 
     dIDs = getInputArgumentOneIDs(fname, &dIDs_size, &ierr);
-    if (ierr) return 0;
+    if (ierr == 2)
+    {
+        // diary([],"pause")
+        diaryPauseAll();
+        PutLhsVar();
+        return 0;
+    }
+    else if (ierr) return 0;
 
     ierr = checkExistByIDs(fname, dIDs, dIDs_size);
     if (ierr) return 0;
@@ -1191,7 +1198,14 @@ static int ResumeByIds(char *fname)
     int ierr = 0;
 
     dIDs = getInputArgumentOneIDs(fname, &dIDs_size, &ierr);
-    if (ierr) return 0;
+    if (ierr == 2)
+    {
+        //diary([],"resume")
+        diaryResumeAll();
+        PutLhsVar();
+        return 0;
+    }
+    else if (ierr) return 0;
 
     ierr = checkExistByIDs(fname, dIDs, dIDs_size);
     if (ierr) return 0;
diff --git a/scilab/modules/output_stream/tests/nonreg_tests/bug_12551.dia.ref b/scilab/modules/output_stream/tests/nonreg_tests/bug_12551.dia.ref
new file mode 100644 (file)
index 0000000..8ec2d41
--- /dev/null
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- ENGLISH IMPOSED -->
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 12551 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12551
+//
+// <-- Short Description -->
+// Stack problem with diary([],"pause") and diary([],"resume")
+//
+FILENAME_DIARY = TMPDIR +'/foo.log';
+fd = diary(FILENAME_DIARY, 'new');
+FILENAME_DIARY2 = TMPDIR +'/foo2.log';
+fd2 = diary(FILENAME_DIARY2, 'new');
+a=1;
+diary([],"pause");
diff --git a/scilab/modules/output_stream/tests/nonreg_tests/bug_12551.tst b/scilab/modules/output_stream/tests/nonreg_tests/bug_12551.tst
new file mode 100644 (file)
index 0000000..6ecbaad
--- /dev/null
@@ -0,0 +1,40 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- ENGLISH IMPOSED -->
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 12551 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12551
+//
+// <-- Short Description -->
+// Stack problem with diary([],"pause") and diary([],"resume")
+//
+
+FILENAME_DIARY = TMPDIR +'/foo.log';
+fd = diary(FILENAME_DIARY, 'new');
+FILENAME_DIARY2 = TMPDIR +'/foo2.log';
+fd2 = diary(FILENAME_DIARY2, 'new');
+a=1;
+
+diary([],"pause");
+a=2;
+txt = mgetl(FILENAME_DIARY); 
+assert_checkequal(txt($),'-->diary([],""pause"");');
+txt2 = mgetl(FILENAME_DIARY2);
+assert_checkequal(txt2($),'-->diary([],""pause"");');
+
+diary([],"resume");
+a=3;
+diary([],"close");
+txt=mgetl(FILENAME_DIARY);
+assert_checkequal(txt($-2),'-->a=3;');
+txt2=mgetl(FILENAME_DIARY2);
+assert_checkequal(txt($-2),'-->a=3;');