Add error checking to PSDRV_Init (with patch)

Ian Pilcher ian.pilcher at home.com
Sun Apr 29 23:45:51 CDT 2001


I'll attach the darn patch this time!

Modified files:
    dlls/wineps: init.c

Log message:
    Ian Pilcher
    Check for errors in PSDRV_Init
-- 
========================================================================
Ian Pilcher                                         ian.pilcher at home.com
========================================================================
-------------- next part --------------
diff -urN ../wine-20010429cvs/dlls/wineps/init.c ./dlls/wineps/init.c
--- ../wine-20010429cvs/dlls/wineps/init.c	Sun Apr 29 13:21:22 2001
+++ ./dlls/wineps/init.c	Sun Apr 29 22:55:02 2001
@@ -243,24 +243,56 @@
     TRACE("(0x%4x, 0x%08lx, %p)\n", hinst, reason, reserved);
    
     switch(reason) {
+
 	case DLL_PROCESS_ATTACH:
-		/* FIXME: return FALSE if we fail any of these steps */
-		PSDRV_Heap = HeapCreate(0, 0x10000, 0);
-		PSDRV_GetFontMetrics();
-		PSDRV_DefaultFont = CreateFontIndirectA(&DefaultLogFont);
-		/* Register driver as "WINEPS", "WINEPS.DLL" and "WINEPS.DRV"
-		   to allow an easy configuring for users */
-		DRIVER_RegisterDriver( "WINEPS", &PSDRV_Funcs );
-		DRIVER_RegisterDriver( "WINEPS.DLL", &PSDRV_Funcs );
-		DRIVER_RegisterDriver( "WINEPS.DRV", &PSDRV_Funcs );
-                break;
+
+	    PSDRV_Heap = HeapCreate(0, 0x10000, 0);
+	    if (PSDRV_Heap == (HANDLE)NULL)
+		return FALSE;
+
+	    if (PSDRV_GetFontMetrics() == FALSE) {
+		HeapDestroy(PSDRV_Heap);
+		return FALSE;
+	    }
+
+	    PSDRV_DefaultFont = CreateFontIndirectA(&DefaultLogFont);
+	    if (PSDRV_DefaultFont == (HANDLE)NULL) {
+		HeapDestroy(PSDRV_Heap);
+		return FALSE;
+	    }
+
+	    /* Register driver as "WINEPS", "WINEPS.DLL" and "WINEPS.DRV"
+		to allow an easy configuring for users */
+
+	    if (DRIVER_RegisterDriver("WINEPS", &PSDRV_Funcs) == FALSE) {
+	 	HeapDestroy(PSDRV_Heap);
+		return FALSE;
+	    }
+
+	    if (DRIVER_RegisterDriver("WINEPS.DLL", &PSDRV_Funcs) == FALSE) {
+		DRIVER_UnregisterDriver("WINEPS");
+		HeapDestroy(PSDRV_Heap);
+		return FALSE;
+	    }
+
+	    if (DRIVER_RegisterDriver("WINEPS.DRV", &PSDRV_Funcs) == FALSE) {
+		DRIVER_UnregisterDriver("WINEPS");
+		DRIVER_UnregisterDriver("WINEPS.DLL");
+		HeapDestroy(PSDRV_Heap);
+		return FALSE;
+	    }
+
+            break;
+
 	case DLL_PROCESS_DETACH:
-		DeleteObject( PSDRV_DefaultFont );
-		HeapDestroy( PSDRV_Heap );
-		DRIVER_UnregisterDriver( "WINEPS" );
-		DRIVER_UnregisterDriver( "WINEPS.DLL" );
-		DRIVER_UnregisterDriver( "WINEPS.DRV" );
-                break;
+
+	    DeleteObject( PSDRV_DefaultFont );
+	    HeapDestroy( PSDRV_Heap );
+	    DRIVER_UnregisterDriver( "WINEPS" );
+	    DRIVER_UnregisterDriver( "WINEPS.DLL" );
+	    DRIVER_UnregisterDriver( "WINEPS.DRV" );
+
+            break;
     }
  
     return TRUE;


More information about the wine-patches mailing list