Browse Source

ENH: Added function call argument to module function to make sure calling convention matches on lookup. Fixed for Watcom.

Brad King 18 years ago
parent
commit
03dfb39bd0
2 changed files with 14 additions and 4 deletions
  1. 6 2
      Tests/Plugin/src/example_exe.cxx
  2. 8 2
      Tests/Plugin/src/example_mod_1.c

+ 6 - 2
Tests/Plugin/src/example_exe.cxx

@@ -44,8 +44,12 @@ int main()
       << kwsys_ios::endl;
     return 1;
     }
-  int(*f)() = reinterpret_cast<int(*)()>(sym);
-  if(f() != (123+456))
+#ifdef __WATCOMC__
+  int(__cdecl *f)(int) = (int(__cdecl *)(int))(sym);
+#else
+  int(*f)(int) = reinterpret_cast<int(*)(int)>(sym);
+#endif
+  if(f(456) != (123+456))
     {
     kwsys_ios::cerr << "Incorrect return value from plugin!"
                     << kwsys_ios::endl;

+ 8 - 2
Tests/Plugin/src/example_mod_1.c

@@ -8,9 +8,15 @@
 # define MODULE_EXPORT
 #endif
 
-MODULE_EXPORT int example_mod_1_function()
+#ifdef __WATCOMC__
+# define MODULE_CCONV __cdecl
+#else
+# define MODULE_CCONV
+#endif
+
+MODULE_EXPORT int MODULE_CCONV example_mod_1_function(int n)
 {
-  int result = example_exe_function() + 456;
+  int result = example_exe_function() + n;
   printf("world\n");
   return result;
 }