mirror of
https://github.com/reactos/reactos.git
synced 2024-07-21 19:58:08 +00:00
[KERNEL32]
- Fix SetCurrentDirectoryA to return success when setting the current directory again See issue #6874 for more details. svn path=/trunk/; revision=56490
This commit is contained in:
parent
1cb2379b98
commit
f6abb6c7ac
|
@ -1372,7 +1372,7 @@ SearchPathW(IN LPCWSTR lpPath,
|
||||||
/* Create the string that describes the output buffer from the caller */
|
/* Create the string that describes the output buffer from the caller */
|
||||||
CallerBuffer.Length = 0;
|
CallerBuffer.Length = 0;
|
||||||
CallerBuffer.Buffer = lpBuffer;
|
CallerBuffer.Buffer = lpBuffer;
|
||||||
|
|
||||||
/* How much space does the caller have? */
|
/* How much space does the caller have? */
|
||||||
if (nBufferLength <= UNICODE_STRING_MAX_CHARS)
|
if (nBufferLength <= UNICODE_STRING_MAX_CHARS)
|
||||||
{
|
{
|
||||||
|
@ -1407,7 +1407,7 @@ SearchPathW(IN LPCWSTR lpPath,
|
||||||
Status);
|
Status);
|
||||||
DbgPrint(" Path = %wZ\n", &PathString);
|
DbgPrint(" Path = %wZ\n", &PathString);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if the failure was due to a small buffer */
|
/* Check if the failure was due to a small buffer */
|
||||||
if (Status == STATUS_BUFFER_TOO_SMALL)
|
if (Status == STATUS_BUFFER_TOO_SMALL)
|
||||||
{
|
{
|
||||||
|
@ -1425,7 +1425,7 @@ SearchPathW(IN LPCWSTR lpPath,
|
||||||
{
|
{
|
||||||
/* It worked! Write the file part now */
|
/* It worked! Write the file part now */
|
||||||
if (lpFilePart) *lpFilePart = &lpBuffer[FilePartSize];
|
if (lpFilePart) *lpFilePart = &lpBuffer[FilePartSize];
|
||||||
|
|
||||||
/* Convert the final result length */
|
/* Convert the final result length */
|
||||||
Result = CallerBuffer.Length / sizeof(WCHAR);
|
Result = CallerBuffer.Length / sizeof(WCHAR);
|
||||||
}
|
}
|
||||||
|
@ -2205,7 +2205,7 @@ SetCurrentDirectoryA(IN LPCSTR lpPathName)
|
||||||
DirName = Basep8BitStringToStaticUnicodeString(lpPathName);
|
DirName = Basep8BitStringToStaticUnicodeString(lpPathName);
|
||||||
if (!DirName) return FALSE;
|
if (!DirName) return FALSE;
|
||||||
|
|
||||||
if (CheckForSameCurdir(DirName)) return FALSE;
|
if (CheckForSameCurdir(DirName)) return TRUE;
|
||||||
|
|
||||||
Status = RtlSetCurrentDirectory_U(DirName);
|
Status = RtlSetCurrentDirectory_U(DirName);
|
||||||
if (NT_SUCCESS(Status)) return TRUE;
|
if (NT_SUCCESS(Status)) return TRUE;
|
||||||
|
|
Loading…
Reference in a new issue