On Pá, 03 srp 2001, Andreas Mohr wrote:
It's a totally dainbread application, that's
why.
I agree (no news for me:-) ) but this does not explain why the application
worked fine on 2001/07/26. I looked into the change log and found
* dlls/wineps/init.c, dlls/wineps/wineps.spec,
dlls/x11drv/x11drv.spec, graphics/Makefile.in, graphics/driver.c,
graphics/win16drv/init.c, graphics/x11drv/bitmap.c,
graphics/x11drv/init.c, graphics/x11drv/oembitmap.c, include/gdi.h,
include/x11drv.h, objects/dc.c, dlls/gdi/Makefile.in,
dlls/gdi/driver.c, dlls/gdi/gdi_main.c, dlls/ttydrv/bitmap.c,
dlls/ttydrv/dc.c, dlls/ttydrv/ttydrv.spec:
Build the DC function table by using GetProcAddress on the graphics
driver module. Moved driver support to dlls/gdi.
I think that the problems were started by this patch. (I do
not say that the patch is wrong, maybe the patch only found some stupid bug in
the app). Thus I did
cvs -diff -D 20010727 -D 20010728
I do not pretend that I do understand the code but some coincidences
exist. For example the crash is near the code which get changed, drivers
and DCs are involved etc. Please look at this:
Index: dlls/gdi/gdi_main.c
===================================================================
RCS file: /home/wine/wine/dlls/gdi/gdi_main.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- dlls/gdi/gdi_main.c 2001/03/05 19:30:18 1.10
+++ dlls/gdi/gdi_main.c 2001/07/27 19:37:31 1.11
@@ -17,14 +17,7 @@
BOOL WINAPI MAIN_GdiInit(HINSTANCE hinstDLL, DWORD reason, LPVOID lpvReserved)
{
if (reason != DLL_PROCESS_ATTACH) return TRUE;
-
- /* GDI initialisation */
- if(!GDI_Init()) return FALSE;
-
- /* Create the Win16 printer driver */
- if (!WIN16DRV_Init()) return FALSE;
-
- return TRUE;
+ return GDI_Init();
}
And this:
Index: graphics/win16drv/init.c
===================================================================
RCS file: /home/wine/wine/graphics/win16drv/init.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- graphics/win16drv/init.c 2001/07/22 23:13:09 1.34
+++ graphics/win16drv/init.c 2001/07/27 19:37:32 1.35
@@ -144,17 +144,16 @@
};
-
-
-
+/* FIXME: this no longer works */
+#if 0
/**********************************************************************
* WIN16DRV_Init
*/
BOOL WIN16DRV_Init(void)
{
return DRIVER_RegisterDriver( NULL /* generic driver */, &WIN16DRV_Funcs );
-
}
+#endif
Maybe the printer driver never gets initialised? (Just a stupid speculation).
What happens if you run this program on a windoze box
without any printer
installed ? (and thus the device= line should not exist, there, too...)
Does it fail the same way or does it seem to recognize somehow that there
is no printer installed ?
I tried just now and the application worked fine, no problems. It did not tell
anything about missing printer; which is OK as I did not start to print.
I have installed the application several houndred times previously, sometimes
to boxes with no printers and never noticed similar problems on windoze.
Thank you for your advice.
Ladislav Sladecek