* Bug #12097 fixed - Scilab wrongly detected DLL platform information. 32/9832/4
Vincent COUVERT [Wed, 28 Nov 2012 08:18:21 +0000 (09:18 +0100)]
Change-Id: I414c7d91d429c5a172f3bcf9e194426796dd3331

scilab/CHANGES_5.4.X
scilab/modules/dynamic_link/src/c/dllinfo.c
scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097.dia.ref [new file with mode: 0644]
scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097.tst [new file with mode: 0644]
scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097_x64.dll [new file with mode: 0644]
scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097_x86.dll [new file with mode: 0644]

index 41ec27a..cc7b139 100644 (file)
@@ -193,6 +193,8 @@ Bug fixes
 
 * Bug #12087 fixed - profile help page did not mention add_profiling.
 
+* Bug #12097 fixed - Scilab wrongly detected DLL platform information.
+
 * Bug #12115 fixed - phaseplot(frq,db,phi) did not work.
 
 * Bug #12119 fixed - bar and barh had wrong x/y bounds.
index eaf73da..1397fa1 100644 (file)
@@ -68,7 +68,7 @@ BOOL isDllW(const wchar_t *dllfilename)
     PIMAGE_NT_HEADERS peHeader = getPEHeader(dllfilename);
     if (peHeader)
     {
-        return (peHeader->FileHeader.Characteristics & IMAGE_FILE_DLL);
+        return ((peHeader->FileHeader.Characteristics & IMAGE_FILE_DLL) == IMAGE_FILE_DLL);
     }
     return FALSE;
 }
@@ -78,7 +78,7 @@ BOOL isX64DllW(const wchar_t *dllfilename)
     PIMAGE_NT_HEADERS peHeader = getPEHeader(dllfilename);
     if (peHeader)
     {
-        return (peHeader->FileHeader.Machine & IMAGE_FILE_MACHINE_AMD64);
+        return ((peHeader->FileHeader.Machine & IMAGE_FILE_MACHINE_AMD64) == IMAGE_FILE_MACHINE_AMD64);
     }
     return FALSE;
 }
@@ -88,7 +88,7 @@ BOOL isX86DllW(const wchar_t *dllfilename)
     PIMAGE_NT_HEADERS peHeader = getPEHeader(dllfilename);
     if (peHeader)
     {
-        return (peHeader->FileHeader.Machine & IMAGE_FILE_MACHINE_I386);
+        return ((peHeader->FileHeader.Machine & IMAGE_FILE_MACHINE_I386) == IMAGE_FILE_MACHINE_I386);
     }
     return FALSE;
 }
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097.dia.ref b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097.dia.ref
new file mode 100644 (file)
index 0000000..81e0dc5
--- /dev/null
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Vincent COVUERT
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- WINDOWS ONLY -->
+//
+// <-- Non-regression test for bug 12097 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12097
+//
+// <-- Short Description -->
+// Scilab wrongly detected DLL platform information.
+// Bug fix is tested through the ref file :
+// Ref file must not contain any message about platform.
+// bug_12097_x86.dll & bug_12097_x64.dll come from DDE toolbox v0.4 (gw_dde.dll renamed)
+curPath = pwd();
+testPath = "SCI\modules\dynamic_link\tests\nonreg_tests\";
+cd(testPath);
+refMsg = msprintf(_("%s: The shared archive was not loaded: %s\n"), "link", _("Unknown Error"));
+if win64() then
+    cmd = "link(""bug_12097_x64.dll"")";
+else
+    cmd = "link(""bug_12097_x86.dll"")";
+end
+assert_checkerror(cmd, refMsg, 236);
+cd(curPath);
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097.tst b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097.tst
new file mode 100644 (file)
index 0000000..505ecba
--- /dev/null
@@ -0,0 +1,38 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Vincent COVUERT
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- WINDOWS ONLY -->
+//
+// <-- Non-regression test for bug 12097 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12097
+//
+// <-- Short Description -->
+// Scilab wrongly detected DLL platform information.
+
+// Bug fix is tested through the ref file :
+// Ref file must not contain any message about platform.
+
+// bug_12097_x86.dll & bug_12097_x64.dll come from DDE toolbox v0.4 (gw_dde.dll renamed)
+
+curPath = pwd();
+testPath = "SCI\modules\dynamic_link\tests\nonreg_tests\";
+cd(testPath);
+
+refMsg = msprintf(_("%s: The shared archive was not loaded: %s\n"), "link", _("Unknown Error"));
+if win64() then
+    cmd = "link(""bug_12097_x64.dll"")";
+else
+    cmd = "link(""bug_12097_x86.dll"")";
+end
+
+assert_checkerror(cmd, refMsg, 236);
+cd(curPath);
+
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097_x64.dll b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097_x64.dll
new file mode 100644 (file)
index 0000000..e59e9bc
Binary files /dev/null and b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097_x64.dll differ
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097_x86.dll b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097_x86.dll
new file mode 100644 (file)
index 0000000..8c871ff
Binary files /dev/null and b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_12097_x86.dll differ