Author: dchapyshev
Date: Wed Apr 15 19:32:04 2009
New Revision: 40527

URL: http://svn.reactos.org/svn/reactos?rev=40527&view=rev
Log:
- Revert r40484

Modified:
    trunk/reactos/dll/win32/kernel32/process/procsup.c

Modified: trunk/reactos/dll/win32/kernel32/process/procsup.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/process/procsup.c?rev=40527&r1=40526&r2=40527&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/process/procsup.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/process/procsup.c [iso-8859-1] Wed Apr 15 
19:32:04 2009
@@ -720,12 +720,34 @@
 
     if (lpCurrentDirectory)
     {
-        if ((GetFileAttributesW(lpCurrentDirectory) == 
INVALID_FILE_ATTRIBUTES) ||
-            !(GetFileAttributesW(lpCurrentDirectory) & 
FILE_ATTRIBUTE_DIRECTORY))
-        {
+        LPWSTR FilePart, Buffer = NULL;
+
+        Buffer = RtlAllocateHeap(RtlGetProcessHeap(),
+                                 0,
+                                 (MAX_PATH + 1) * sizeof(WCHAR));
+
+        if (!Buffer)
+        {
+            SetLastErrorByStatus(STATUS_NO_MEMORY);
+            return FALSE;
+        }
+
+        if (GetFullPathNameW(lpCurrentDirectory, MAX_PATH, Buffer, &FilePart) 
> MAX_PATH)
+        {
+            RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer);
             SetLastError(ERROR_DIRECTORY);
             return FALSE;
         }
+
+        if ((GetFileAttributesW(Buffer) == INVALID_FILE_ATTRIBUTES) ||
+            !(GetFileAttributesW(Buffer) & FILE_ATTRIBUTE_DIRECTORY))
+        {
+            RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer);
+            SetLastError(ERROR_DIRECTORY);
+            return FALSE;
+        }
+
+        RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer);
     }
 
     /*

Reply via email to