--- queryloaders.c	2004-04-25 01:17:02.000000000 +1000
+++ queryloaders2.c	2004-04-25 01:16:14.000000000 +1000
@@ -151,8 +151,14 @@
 {
 	char *path;
 	GModule *module;
-	void                    (*fill_info)     (GdkPixbufFormat *info);
-	void                    (*fill_vtable)   (GdkPixbufModule *module);
+
+	// needed or gcc will give a warning that dereferencing type-punned pointer will 
+	// break strict-aliasing rules
+	gpointer pfill_info;
+	gpointer pfill_vtable;
+
+	void                    (*fill_info)     (GdkPixbufFormat *info)=NULL;
+	void                    (*fill_vtable)   (GdkPixbufModule *module)=NULL;
 
 	if (g_path_is_absolute (file)) 
 		path = g_strdup (file);
@@ -161,11 +167,13 @@
 
 	module = g_module_open (path, 0);
 	if (module &&
-	    g_module_symbol (module, "fill_info", (gpointer *) &fill_info) &&
-	    g_module_symbol (module, "fill_vtable", (gpointer *) &fill_vtable)) {
+	    g_module_symbol (module, "fill_info", &pfill_info) &&
+	    g_module_symbol (module, "fill_vtable", &pfill_vtable)) {
 		GdkPixbufFormat *info;
 		GdkPixbufModule *vtable;
 		
+		fill_info = pfill_info;
+		fill_vtable = pfill_vtable;
 #ifdef G_OS_WIN32
 		/* Replace backslashes in path with forward slashes, so that
 		 * it reads in without problems.
