* Bug #13471 fixed - Infinite loop in ilib_build_jar used on an empty dir 64/14664/3
Simon Marchetto [Wed, 11 Jun 2014 16:29:44 +0000 (18:29 +0200)]
Change-Id: I894530655e0e75f766f56b219aa7f095b28325c1

scilab/CHANGES_5.5.X
scilab/modules/dynamic_link/macros/ilib_build_jar.sci
scilab/modules/dynamic_link/tests/nonreg_tests/bug_13471.dia.ref [new file with mode: 0644]
scilab/modules/dynamic_link/tests/nonreg_tests/bug_13471.tst [new file with mode: 0644]

index 2acc454..a8f6fe7 100644 (file)
@@ -138,6 +138,8 @@ Scilab Bug Fixes
 
 * Bug #13438 fixed - drawaxis did not return the handle of the created axis.
 
+* Bug #13471 fixed - ilib_build_jar infinite loop when used on an empty directory fixed.
+
 * Bug #13481 fixed - varn did not work on rational fractions
 
 * Bug #13491 fixed - intg now properly returns when the user function produces an error.
index 0c56911..aeae565 100644 (file)
@@ -20,6 +20,9 @@ function ilib_build_jar(jarFilePath, packageNames, sourcePaths, classPaths, mani
     // Returns all the java source files contained in a path tree
     function javaFilePaths = findJavaFiles(path, javaFilePaths)
         fileNames = listfiles(path)';
+        if (isempty(fileNames)) then
+            return;
+        end
         filePaths = fullfile(path, fileNames);
 
         // First, explore sub directories
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_13471.dia.ref b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_13471.dia.ref
new file mode 100644 (file)
index 0000000..4852f63
--- /dev/null
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Simon MARCHETTO
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 13471 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13471
+//
+// <-- Short Description -->
+// Infinite loop in ilib_build_jar used on an empty dir
+//
+ilib_verbose(0);
+originalDir = pwd();
+cd(TMPDIR);
+emptyDir = fullfile(TMPDIR, 'emptyDir');
+mkdir(emptyDir);
+jarPath = fullfile(TMPDIR, 'emptyDir.jar');
+ierr = execstr('ilib_build_jar(jarPath, ''emptyDir'', emptyDir)', 'errcatch');
+cd(originalDir);
+assert_checkequal(ierr, 0);
+assert_checktrue(isfile(jarPath));
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_13471.tst b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_13471.tst
new file mode 100644 (file)
index 0000000..568aa2f
--- /dev/null
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Simon MARCHETTO
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 13471 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13471
+//
+// <-- Short Description -->
+// Infinite loop in ilib_build_jar used on an empty dir
+//
+
+ilib_verbose(0);
+originalDir = pwd();
+cd(TMPDIR);
+emptyDir = fullfile(TMPDIR, 'emptyDir');
+mkdir(emptyDir);
+jarPath = fullfile(TMPDIR, 'emptyDir.jar');
+ierr = execstr('ilib_build_jar(jarPath, ''emptyDir'', emptyDir)', 'errcatch');
+cd(originalDir);
+assert_checkequal(ierr, 0);
+assert_checktrue(isfile(jarPath));