Hello,

the attached patch fixes a problem when loading DOS exe files which have
4 bytes on the last page of the executable. There is no comment in the
code and i googled and couldn't find any reason or hint why having 4
bytes on the last page is special and why we should than load the full
512 bytes of the last page (i'm CC'ing wine-devel just in case). This
prevents some of the "PC Intern 4, Systemprogrammierung" DOS example
files from running with an 'invalid exe file' error.

License: LGPL, X11
Changelog:
        Michael Stefaniuc <[EMAIL PROTECTED]>
        - do not load the full last page of a DOS EXE if we have only 4
          bytes in it.

bye
        michael
-- 
Michael Stefaniuc               Tel.: +49-711-96437-199
System Administration           Fax.: +49-711-96437-111
Red Hat GmbH                    Email: [EMAIL PROTECTED]
Hauptstaetterstr. 58            http://www.redhat.de/
D-70178 Stuttgart
Index: dlls/winedos/module.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/module.c,v
retrieving revision 1.41
diff -u -r1.41 module.c
--- dlls/winedos/module.c       9 Jan 2004 22:18:50 -0000       1.41
+++ dlls/winedos/module.c       16 Jan 2004 01:21:34 -0000
@@ -232,7 +232,7 @@
   /* calculate load size */
   image_start=mz_header.e_cparhdr<<4;
   image_size=mz_header.e_cp<<9; /* pages are 512 bytes */
-  if ((mz_header.e_cblp!=0)&&(mz_header.e_cblp!=4)) image_size-=512-mz_header.e_cblp;
+  if (mz_header.e_cblp!=0) image_size-=512-mz_header.e_cblp;
   image_size-=image_start;
   min_size=image_size+((DWORD)mz_header.e_minalloc<<4)+(PSP_SIZE<<4);
   max_size=image_size+((DWORD)mz_header.e_maxalloc<<4)+(PSP_SIZE<<4);

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to