CURSORICON_SimulateLoadingFromResourceW param check. VFP6 EXEs now work.

C. Daniel Mojoli B. cdmojoli at idea.com.py
Tue Mar 23 10:08:51 CST 2004


Add minimal parameter validation to function
CURSORICON_SimulateLoadingFromResourceW(...). We check that the icon file at
least begins with icon magic.

This is essential for running Visual FoxPro 6 APP or EXE files because its
runtime will unpack resources (e.g. a background image) in temporary files and
then test whether that file can be loaded successfully by several methods, one
of them being trying to load the resource as a cursor icon.

With current Wine code this behavior will cause an exception when the resource
is actually not an icon.

Relying on failure semantics seems a horrible way to program but VFP6 does
so. Please notice VFP6 does not fail when you "do some.{prg|fxp}" because it
seems to use the resource's original file extension to determine what function
should load the resource.

I am unaware of this situation under VFP7 or VFP8. (I actually have not coded
anything in *BASE since 1991!)

Index: windows/cursoricon.c
===================================================================
RCS file: /home/wine/wine/windows/cursoricon.c,v
retrieving revision 1.71
diff -u -r1.71 cursoricon.c
--- windows/cursoricon.c	12 Feb 2004 00:35:01 -0000	1.71
+++ windows/cursoricon.c	23 Mar 2004 14:19:21 -0000
@@ -504,6 +504,9 @@
         if (pos>=(LPBYTE)bits+766) goto fail;
       }
     }
+
+    if ( *(LPDWORD)bits!=0x00010000 ) goto fail; /* icon files start with 00 00 01 00 */
+
     if (!(entries = bits->idCount)) goto fail;
     size = sizeof(CURSORICONDIR) + sizeof(CURSORICONDIRENTRY) * (entries - 1);
     _free = (LPBYTE) size;



More information about the wine-patches mailing list