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);
pgp00000.pgp
Description: PGP signature
