Browse Source

* fixed do_getdir() for non-defaultdrive after r25042 ("drive" array has to
be an array of widechar now)
* fixed restoring of original path in do_getdir() (pass contents of
unicodestring to SetCurrentDirectoryW(), not its address)

git-svn-id: branches/cpstrrtl@25088 -

Jonas Maebe 12 years ago
parent
commit
ba49e4a29d
1 changed files with 3 additions and 3 deletions
  1. 3 3
      rtl/win/sysdir.inc

+ 3 - 3
rtl/win/sysdir.inc

@@ -74,7 +74,7 @@ end;
 procedure do_GetDir (DriveNr: byte; var Dir: Unicodestring);
 {$ifndef WINCE}
 var
-  Drive:array[0..3]of char;
+  Drive:array[0..3]of widechar;
   defaultdrive:boolean;
   savebuf: UnicodeString;
   len : integer;
@@ -97,7 +97,7 @@ begin
       errno := word (GetLastError);
       Errno2InoutRes;
       Dir := widechar (DriveNr + 64) + ':\';
-      SetCurrentDirectoryW(@SaveBuf);
+      SetCurrentDirectoryW(punicodechar(SaveBuf));
       Exit;
      end;
    end;
@@ -106,7 +106,7 @@ begin
   setlength(dir,len-1); // -1 because len is #0 inclusive
   GetCurrentDirectoryW(len,punicodechar(dir));
   if not defaultdrive then
-    SetCurrentDirectoryW(@SaveBuf);
+    SetCurrentDirectoryW(punicodechar(SaveBuf));
   if not FileNameCasePreserving then
     dir:=upcase(dir);
 {$else WINCE}