Author: pschweitzer
Date: Sun Nov 20 17:00:39 2011
New Revision: 54459
URL:
http://svn.reactos.org/svn/reactos?rev=54459&view=rev
Log:
[KERNEL32]
Properly fix GetEnvironmentVariableW and set error in case of RtlInitUnicodeStringEx
failure
Modified:
trunk/reactos/dll/win32/kernel32/client/environ.c
Modified: trunk/reactos/dll/win32/kernel32/client/environ.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
==============================================================================
--- trunk/reactos/dll/win32/kernel32/client/environ.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/client/environ.c [iso-8859-1] Sun Nov 20 17:00:39
2011
@@ -181,24 +181,28 @@
{
UniSize = UNICODE_STRING_MAX_BYTES - sizeof(UNICODE_NULL);
}
+
+ Status = RtlInitUnicodeStringEx(&VarName, lpName);
+ if (!NT_SUCCESS(Status))
+ {
+ BaseSetLastNTError(Status);
+ return 0;
+ }
RtlInitEmptyUnicodeString(&VarValue, lpBuffer, UniSize);
- Status = RtlInitUnicodeStringEx(&VarName, lpName);
- if (NT_SUCCESS(Status))
- {
- Status = RtlQueryEnvironmentVariable_U(NULL, &VarName, &VarValue);
- if (!NT_SUCCESS(Status))
- {
- if (Status == STATUS_BUFFER_TOO_SMALL)
- {
- return (VarValue.Length / sizeof(WCHAR)) + sizeof(ANSI_NULL);
- }
- BaseSetLastNTError (Status);
- return 0;
- }
-
- lpBuffer[VarValue.Length / sizeof(WCHAR)] = UNICODE_NULL;
- }
+
+ Status = RtlQueryEnvironmentVariable_U(NULL, &VarName, &VarValue);
+ if (!NT_SUCCESS(Status))
+ {
+ if (Status == STATUS_BUFFER_TOO_SMALL)
+ {
+ return (VarValue.Length / sizeof(WCHAR)) + sizeof(ANSI_NULL);
+ }
+ BaseSetLastNTError (Status);
+ return 0;
+ }
+
+ lpBuffer[VarValue.Length / sizeof(WCHAR)] = UNICODE_NULL;
return (VarValue.Length / sizeof(WCHAR));
}