DOS FindFirst/FindNext fix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



It looks like conversion to wide characters messed up the
long/short mask selection logic in DOSFS_FindNextInitialize. 
Previously, null pointer was used to indicate that mask is not
to be used but RtlCreateUnicodeStringFromAsciiz changes null
pointers to empty strings. This makes it impossible to
use FindFirst/FindNext from DOS int21.


Changelog: DOSFS_FindNextInitialize now sets wchar
           long and short masks to null if char masks were null.
           

Index: files/dos_fs.c
===================================================================
RCS file: /home/wine/wine/files/dos_fs.c,v
retrieving revision 1.120
diff -u -r1.120 dos_fs.c
--- files/dos_fs.c      16 Sep 2002 19:27:15 -0000      1.120
+++ files/dos_fs.c      28 Sep 2002 14:49:45 -0000
@@ -1840,8 +1840,18 @@
         info.path = (LPSTR)path;
         RtlFreeHeap(GetProcessHeap(), 0, info.long_mask);
         RtlFreeHeap(GetProcessHeap(), 0, info.short_mask);
-        info.long_mask = long_maskW.Buffer;
-        info.short_mask = short_maskW.Buffer;
+        if(long_mask)
+            info.long_mask = long_maskW.Buffer;
+        else {
+            info.long_mask = 0;
+            RtlFreeUnicodeString(&long_maskW);
+        }
+        if(short_mask)
+            info.short_mask = short_maskW.Buffer;
+        else {
+            info.short_mask = 0;
+            RtlFreeUnicodeString(&short_maskW);
+        }
         info.attr = attr;
         info.drive = drive;
         info.cur_pos = 0;



-- 
Jukka Heinonen <http://www.iki.fi/jhei/>


[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux