Index: trunk/src/lib/assimp.cc
===================================================================
--- trunk/src/lib/assimp.cc	(revision 395)
+++ trunk/src/lib/assimp.cc	(revision 406)
@@ -35,5 +35,5 @@
 	assimp_library.open( path );
 
-#	define NV_ASSIMP_FUN( rtype, fname, fparams ) *(void **) (&fname) = assimp_library.get(#fname);
+#	define NV_ASSIMP_FUN( rtype, fname, fparams ) void_assign( fname, assimp_library.get(#fname) );
 #	include <nv/lib/detail/assimp_functions.inc>
 #	undef NV_ASSIMP_FUN
Index: trunk/src/lib/curses.cc
===================================================================
--- trunk/src/lib/curses.cc	(revision 395)
+++ trunk/src/lib/curses.cc	(revision 406)
@@ -22,5 +22,5 @@
 	curses_library.open( path );
 
-#	define NV_CURSES_FUN( rtype, fname, fparams ) *(void **) (&::fname) = curses_library.get(#fname);
+#	define NV_CURSES_FUN( rtype, fname, fparams ) void_assign( ::fname, curses_library.get(#fname) );
 #	include <nv/lib/detail/curses_functions.inc>
 #	undef NV_CURSES_FUN
Index: trunk/src/lib/fmod.cc
===================================================================
--- trunk/src/lib/fmod.cc	(revision 395)
+++ trunk/src/lib/fmod.cc	(revision 406)
@@ -125,5 +125,5 @@
 	fmod_library.open( path );
 
-#	define NV_FMOD_FUN( rtype, fname, fparams ) *(void **) (&fname) = fmod_library.get(#fname);
+#	define NV_FMOD_FUN( rtype, fname, fparams ) void_assign( fname, fmod_library.get(#fname) );
 #	include <nv/lib/detail/fmod_functions.inc>
 #	undef NV_FMOD_FUN
Index: trunk/src/lib/freetype2.cc
===================================================================
--- trunk/src/lib/freetype2.cc	(revision 395)
+++ trunk/src/lib/freetype2.cc	(revision 406)
@@ -21,5 +21,5 @@
 	freetype_library.open( path );
 
-#	define NV_FREETYPE_FUN( rtype, fname, fparams ) *(void **) (&fname) = freetype_library.get(#fname);
+#	define NV_FREETYPE_FUN( rtype, fname, fparams ) void_assign( fname, freetype_library.get(#fname) );
 #	include <nv/lib/detail/freetype2_functions.inc>
 #	undef NV_FREETYPE_FUN
Index: trunk/src/lib/gl.cc
===================================================================
--- trunk/src/lib/gl.cc	(revision 395)
+++ trunk/src/lib/gl.cc	(revision 406)
@@ -82,21 +82,21 @@
 	if ( gl_library_loaded && !force_reload ) return true;
 #if defined( NV_SDL_GL )
-#		define NV_GL_LOAD( symbol ) *(void **) (&symbol) = SDL_GL_GetProcAddress(#symbol);
-#		define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = SDL_GL_GetProcAddress(#symbol);
-	*(void **) (&gl_ext_loader) = SDL_GL_GetProcAddress;
+#		define NV_GL_LOAD( symbol ) void_assign( symbol, SDL_GL_GetProcAddress(#symbol) );
+#		define NV_GL_LOAD_EXT( symbol ) void_assign( symbol, SDL_GL_GetProcAddress(#symbol) );
+	void_assign( gl_ext_loader, SDL_GL_GetProcAddress );
 #else
 	if ( !gl_library.is_open() ) gl_library.open( path );
 
 #	if NV_PLATFORM == NV_WINDOWS 
-#		define NV_GL_LOAD( symbol ) *(void **) (&symbol) = gl_library.get(#symbol);
-		*(void **) (&gl_ext_loader) = gl_library.get("wglGetProcAddress");
-#		define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = gl_ext_loader(#symbol);
+#		define NV_GL_LOAD( symbol ) void_assign( symbol, gl_library.get(#symbol) );
+		void_assign( gl_ext_loader, gl_library.get( "wglGetProcAddress" ) );
+#		define NV_GL_LOAD_EXT( symbol ) void_assign( symbol, gl_ext_loader(#symbol) );
 #	elif (NV_PLATFORM == NV_LINUX || NV_PLATFORM == NV_APPLE)
-#		define NV_GL_LOAD( symbol ) *(void **) (&symbol) = gl_library.get(#symbol);
-		*(void **) (&gl_ext_loader) = gl_library.get("glXGetProcAddress");
-#		define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = gl_ext_loader(#symbol);
+#		define NV_GL_LOAD( symbol ) void_assign( symbol, gl_library.get(#symbol) );
+		void_assign( gl_ext_loader, gl_library.get("glXGetProcAddress") );
+#		define NV_GL_LOAD_EXT( symbol ) void_assign( symbol, gl_ext_loader(#symbol) );
 #	else
-#		define NV_GL_LOAD( symbol ) *(void **) (&symbol) = gl_library.get(#symbol);
-#		define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = gl_library.get(#symbol);
+#		define NV_GL_LOAD( symbol ) void_assign( symbol, gl_library.get(#symbol) );
+#		define NV_GL_LOAD_EXT( symbol ) void_assign( symbol, gl_library.get(#symbol) );
 #	endif
 #endif
@@ -114,4 +114,6 @@
 }
 
+
+
 bool nv::load_wgl_library( const char* path /*= NV_GL_PATH */, bool force_reload )
 {
@@ -119,15 +121,15 @@
 #if NV_PLATFORM == NV_WINDOWS 
 #if defined( NV_SDL_GL )
-#		define NV_GL_LOAD( symbol ) *(void **) (&symbol) = SDL_GL_GetProcAddress(#symbol);
-#		define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = SDL_GL_GetProcAddress(#symbol);
-#	    define NV_GL_LOAD_REN( fname, rname )  *(void **) (&rname) = SDL_GL_GetProcAddress(#fname);
-	(void **) (&gl_ext_loader) = SDL_GL_GetProcAddress;
+#		define NV_GL_LOAD( symbol ) void_assign( symbol, SDL_GL_GetProcAddress(#symbol) );
+#		define NV_GL_LOAD_EXT( symbol ) void_assign( symbol, SDL_GL_GetProcAddress(#symbol) );
+#	    define NV_GL_LOAD_REN( fname, rname )  void_assign( rname, SDL_GL_GetProcAddress(#fname) );
+	void_assign( gl_ext_loader, SDL_GL_GetProcAddress );
 #else // 
 	if ( !gl_library.is_open() ) gl_library.open( path );
 
-	*(void **) (&gl_ext_loader) = gl_library.get("wglGetProcAddress");
-#define NV_GL_LOAD( symbol ) *(void **) (&symbol) = gl_library.get(#symbol);
-#define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = gl_ext_loader(#symbol);
-#define NV_GL_LOAD_REN( fname, rname ) *(void **) (&rname) = gl_library.get(#fname);
+	void_assign( gl_ext_loader, gl_library.get("wglGetProcAddress") );
+#define NV_GL_LOAD( symbol ) void_assign( symbol, gl_library.get(#symbol) );
+#define NV_GL_LOAD_EXT( symbol ) void_assign( symbol, gl_ext_loader(#symbol) );
+#define NV_GL_LOAD_REN( fname, rname ) void_assign( rname, gl_library.get(#fname) );
 #endif 
 #	define NV_GL_FUN( rtype, fname, fparams ) NV_GL_LOAD( fname )
@@ -161,7 +163,7 @@
 	BOOL  (NV_GL_APIENTRY *wgl_deletecontext) (HGLRC)      = nullptr;
 
-	*(void **) &wgl_createcontext = gl_library.get("wglCreateContext");
-	*(void **) &wgl_makecurrent   = gl_library.get("wglMakeCurrent");
-	*(void **) &wgl_deletecontext = gl_library.get("wglDeleteContext");
+	void_assign( wgl_createcontext, gl_library.get("wglCreateContext") );
+	void_assign( wgl_makecurrent,   gl_library.get("wglMakeCurrent") );
+	void_assign( wgl_deletecontext, gl_library.get("wglDeleteContext") );
 
 	WNDCLASS wndClass;
@@ -175,5 +177,5 @@
 	wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 	wndClass.hInstance = hInstance;
-	wndClass.lpfnWndProc = (WNDPROC) DefWindowProc;
+	wndClass.lpfnWndProc = reinterpret_cast<WNDPROC>( DefWindowProc );
 	wndClass.lpszClassName = TEXT("Dummy67789");
 	wndClass.lpszMenuName = 0;
@@ -253,5 +255,5 @@
 
 #	define NV_GL_FUN_EXT( rtype, symbol, fparams ) \
-	*(void **) (&symbol) = load_gl_ext_symbol(#symbol, true, nullptr); \
+	void_assign( symbol, load_gl_ext_symbol(#symbol, true, nullptr) ); \
 	count++; if ( !symbol ) fail_count++;
 
@@ -266,5 +268,5 @@
 	default : {
 		NV_LOG_ERROR( "load_gl_extension - unknown extension \"", name, "\"!" );
-		return nullptr;
+		return false;
 	}
 	}
@@ -274,5 +276,5 @@
 	{
 		NV_LOG_NOTICE( "load_gl_extension - extension \"", name, "\" loaded (", count, " symbols)" );
-		gl_loaded_extensions = (gl_extensions)( gl_loaded_extensions | (unsigned)extension );
+		gl_loaded_extensions = gl_extensions( gl_loaded_extensions | static_cast<unsigned>( extension ) );
 		return false;
 	}
Index: trunk/src/lib/lua.cc
===================================================================
--- trunk/src/lib/lua.cc	(revision 395)
+++ trunk/src/lib/lua.cc	(revision 406)
@@ -128,5 +128,5 @@
 static const lua_Number *lua_version_51 (lua_State*) 
 {
-	static const lua_Number version = (lua_Number)LUA_VERSION_NUM;
+	static const lua_Number version = lua_Number( LUA_VERSION_NUM );
 	return &version;
 }
@@ -227,5 +227,5 @@
 #endif
 
-#	define NV_LUA_FUN( rtype, fname, fparams ) *(void **) (&fname) = lua_library.get(#fname);
+#	define NV_LUA_FUN( rtype, fname, fparams ) void_assign( fname, lua_library.get(#fname) );
 #	if NV_LUA_VERSION == NV_LUA_52
 #		define NV_LUA_FUN_51( rtype, fname, fparams )
@@ -246,11 +246,11 @@
 
 #if NV_LUA_VERSION == NV_LUA_5C
-#	define NV_LUA_LOAD( fname ) *(void **) (&fname) = lua_library.get(#fname);
-#	define NV_LUA_LOAD_AS( fname,fname2 ) *(void **) (&fname) = lua_library.get(#fname2);
+#	define NV_LUA_LOAD( fname ) void_assign( fname, lua_library.get(#fname) );
+#	define NV_LUA_LOAD_AS( fname,fname2 ) void_assign( fname, lua_library.get(#fname2) );
 	bool version_52 = lua_library.try_get("luaL_checkversion_") != nullptr;
 	if (version_52)
 	{
 #	define NV_LUA_COMPAT_FUN( u1, fn, u2, u3, fn2, u5, u6, u7 ) \
-	*(void **) (&(fn2##_compat)) = lua_library.get(#fn2); \
+	void_assign( fn2##_compat, lua_library.get(#fn2) ); \
 	fn = call_##fn2##_compat; 
 #	include <nv/lib/detail/lua_functions_compat.inc>
@@ -280,5 +280,5 @@
 	{
 #	define NV_LUA_COMPAT_FUN( u1, fn, u2, u3, u4, u5, u6, u7 ) \
-		*(void **) (&fn) = lua_library.get(#fn);
+		void_assign(fn, lua_library.get(#fn) );
 #	include <nv/lib/detail/lua_functions_compat.inc>
 #	undef NV_LUA_COMPAT_FUN
Index: trunk/src/lib/sdl.cc
===================================================================
--- trunk/src/lib/sdl.cc	(revision 395)
+++ trunk/src/lib/sdl.cc	(revision 406)
@@ -20,5 +20,5 @@
 	if ( sdl_library.is_open() ) return true;
 	sdl_library.open( path );
-#	define NV_SDL_FUN( rtype, fname, fparams ) *(void **) (&fname) = sdl_library.get(#fname);
+#	define NV_SDL_FUN( rtype, fname, fparams )void_assign( fname, sdl_library.get(#fname) );
 #	include <nv/lib/detail/sdl_functions.inc>
 #	undef NV_SDL_FUN
Index: trunk/src/lib/sdl_image.cc
===================================================================
--- trunk/src/lib/sdl_image.cc	(revision 395)
+++ trunk/src/lib/sdl_image.cc	(revision 406)
@@ -21,5 +21,5 @@
 	sdl_image_library.open( path );
 
-#	define NV_SDL_FUN( rtype, fname, fparams ) *(void **) (&fname) = sdl_image_library.get(#fname);
+#	define NV_SDL_FUN( rtype, fname, fparams ) void_assign( fname, sdl_image_library.get(#fname) );
 #	include <nv/lib/detail/sdl_image_functions.inc>
 #	undef NV_SDL_FUN
Index: trunk/src/lib/sdl_mixer.cc
===================================================================
--- trunk/src/lib/sdl_mixer.cc	(revision 395)
+++ trunk/src/lib/sdl_mixer.cc	(revision 406)
@@ -21,5 +21,5 @@
 	sdl_mixer_library.open( path );
 
-#	define NV_SDL_FUN( rtype, fname, fparams ) *(void **) (&fname) = sdl_mixer_library.get(#fname);
+#	define NV_SDL_FUN( rtype, fname, fparams ) void_assign( fname, sdl_mixer_library.get(#fname) );
 #	include <nv/lib/detail/sdl_mixer_functions.inc>
 #	undef NV_SDL_FUN
