[Scummvm-cvs-logs] SF.net SVN: scummvm:[33330] scummvm/trunk/backends/plugins/win32/ win32-provider.cpp

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Jul 27 13:07:39 CEST 2008


Revision: 33330
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33330&view=rev
Author:   lordhoto
Date:     2008-07-27 11:07:38 +0000 (Sun, 27 Jul 2008)

Log Message:
-----------
Fixed win32 plugin provider.

Modified Paths:
--------------
    scummvm/trunk/backends/plugins/win32/win32-provider.cpp

Modified: scummvm/trunk/backends/plugins/win32/win32-provider.cpp
===================================================================
--- scummvm/trunk/backends/plugins/win32/win32-provider.cpp	2008-07-27 10:43:15 UTC (rev 33329)
+++ scummvm/trunk/backends/plugins/win32/win32-provider.cpp	2008-07-27 11:07:38 UTC (rev 33330)
@@ -50,21 +50,14 @@
 
 	virtual VoidFunc findSymbol(const char *symbol) {
 		#ifndef _WIN32_WCE
-		void *func = (void *)GetProcAddress((HMODULE)_dlHandle, symbol);
+		FARPROC func = GetProcAddress((HMODULE)_dlHandle, symbol);
 		#else
-		void *func = (void *)GetProcAddress((HMODULE)_dlHandle, toUnicode(symbol));
+		FARPROC func = GetProcAddress((HMODULE)_dlHandle, toUnicode(symbol));
 		#endif
 		if (!func)
 			debug("Failed loading symbol '%s' from plugin '%s'", symbol, _filename.c_str());
 
-		// FIXME HACK: This is a HACK to circumvent a clash between the ISO C++
-		// standard and POSIX: ISO C++ disallows casting between function pointers
-		// and data pointers, but dlsym always returns a void pointer. For details,
-		// see e.g. <http://www.trilithium.com/johan/2004/12/problem-with-dlsym/>.
-		assert(sizeof(VoidFunc) == sizeof(func));
-		VoidFunc tmp;
-		memcpy(&tmp, &func, sizeof(VoidFunc));
-		return tmp;
+		return (void (*)())func;
 	}
 
 public:


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list