[Bug 521] WINE removes trailing backslash in GetFullPathNameA/W in dos_fs.c.

Mike McCormack mike at codeweavers.com
Mon Jan 12 23:51:41 CST 2004


This closes bug 521, and removes a couple of wine_todos from the 
regression test for pathes.  The test for setting "lastpart" in both 
GetFullPathNameA/W was wrong (would always pass).

Mike


ChangeLog:
* preserve trailing backslashes in GetFullPathName


Wine Bugs wrote:

> ------- Additional Comments From marcus at jet.franken.de  2004-12-01 15:21 -------
> Mike? any update? I think it is not applieds yet. 
-------------- next part --------------
Index: files/dos_fs.c
===================================================================
RCS file: /home/wine/wine/files/dos_fs.c,v
retrieving revision 1.144
diff -u -r1.144 dos_fs.c
--- files/dos_fs.c	5 Jan 2004 23:42:09 -0000	1.144
+++ files/dos_fs.c	13 Jan 2004 05:22:59 -0000
@@ -1585,9 +1585,6 @@
 	}
     if (full_name.short_name[namelen-1]=='.')
 	full_name.short_name[(namelen--)-1] =0;
-    if (!driveletter)
-      if (full_name.short_name[namelen-1]=='\\')
-	full_name.short_name[(namelen--)-1] =0;
     TRACE("got %s\n", debugstr_w(full_name.short_name));
 
     /* If the lpBuffer buffer is too small, the return value is the
@@ -1655,7 +1652,7 @@
 
             if (lastpart)
             {
-                LPSTR p = buffer + strlen(buffer);
+                LPSTR p = buffer + strlen(buffer) - 1;
 
                 if (*p != '\\')
                 {
@@ -1681,7 +1678,7 @@
     DWORD ret = DOSFS_DoGetFullPathName( name, len, buffer );
     if (ret && (ret<=len) && buffer && lastpart)
     {
-        LPWSTR p = buffer + strlenW(buffer);
+        LPWSTR p = buffer + strlenW(buffer) - 1;
         if (*p != (WCHAR)'\\')
         {
             while ((p > buffer + 2) && (*p != (WCHAR)'\\')) p--;
Index: dlls/kernel/tests/path.c
===================================================================
RCS file: /home/wine/wine/dlls/kernel/tests/path.c,v
retrieving revision 1.20
diff -u -r1.20 path.c
--- dlls/kernel/tests/path.c	18 Nov 2003 20:39:34 -0000	1.20
+++ dlls/kernel/tests/path.c	13 Jan 2004 05:23:00 -0000
@@ -112,14 +112,11 @@
   len=GetFullPathNameA(subpath,MAX_PATH,tmpstr,&strptr);
   ok(len, "GetFullPathNameA failed for: '%s'",subpath);
   if(HAS_TRAIL_SLASH_A(subpath)) {
-/* Wine strips off the trailing '\\'. Neither Win98 nor Win2k do this. */
-    todo_wine {
-      ok(strptr==NULL,
-         "%s: GetFullPathNameA should not return a filename ptr",errstr);
-      ok(lstrcmpiA(fullpath,tmpstr)==0,
-         "%s: GetFullPathNameA returned '%s' instead of '%s'",
-         errstr,tmpstr,fullpath);
-    }
+    ok(strptr==NULL,
+       "%s: GetFullPathNameA should not return a filename ptr",errstr);
+    ok(lstrcmpiA(fullpath,tmpstr)==0,
+       "%s: GetFullPathNameA returned '%s' instead of '%s'",
+       errstr,tmpstr,fullpath);
   } else {
     ok(lstrcmpiA(strptr,filename)==0,
        "%s: GetFullPathNameA returned '%s' instead of '%s'",


More information about the wine-patches mailing list