For me this looks like a hack. It might "do what Windows does", but the result is more based on luck / random compiler behaviour rather than deterministic behavior. We should think about returning a full ULONG in all functions that rely on this (like Wow64EnableWow64FsRedirection), containing the correct value, rather than relying on random stuff.


Am 20.02.2015 um 08:03 schrieb tfa...@svn.reactos.org:
Author: tfaber
Date: Fri Feb 20 07:03:00 2015
New Revision: 66365

URL: http://svn.reactos.org/svn/reactos?rev=66365&view=rev
Log:
[KERNEL32]
- Make BaseSetLastNTError return the converted Win32 error code. This will 
determine the upper 24 bits of EAX in functions that return BOOLEAN FALSE right 
after calling BaseSetLastNTError, e.g. Wow64EnableWow64FsRedirection. Fixes 
installers using WiX Toolset (e.g. VS2012 redist) on MSVC builds.
See http://wixtoolset.org/issues/4681/ for the WiX bug that causes this.
CORE-8010

Modified:
     trunk/reactos/dll/win32/kernel32/client/except.c
     trunk/reactos/dll/win32/kernel32/include/kernel32.h

Modified: trunk/reactos/dll/win32/kernel32/client/except.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/except.c?rev=66365&r1=66364&r2=66365&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/client/except.c    [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/client/except.c    [iso-8859-1] Fri Feb 20 
07:03:00 2015
@@ -682,12 +682,16 @@
  /*
   * @implemented
   */
-VOID
+DWORD
  WINAPI
  BaseSetLastNTError(IN NTSTATUS Status)
  {
+    DWORD dwErrCode;
+
      /* Convert from NT to Win32, then set */
-    SetLastError(RtlNtStatusToDosError(Status));
+    dwErrCode = RtlNtStatusToDosError(Status);
+    SetLastError(dwErrCode);
+    return dwErrCode;
  }
/*

Modified: trunk/reactos/dll/win32/kernel32/include/kernel32.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/include/kernel32.h?rev=66365&r1=66364&r2=66365&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/include/kernel32.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/include/kernel32.h [iso-8859-1] Fri Feb 20 
07:03:00 2015
@@ -353,7 +353,7 @@
  WINAPI
  InitCommandLines(VOID);
-VOID
+DWORD
  WINAPI
  BaseSetLastNTError(IN NTSTATUS Status);




Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to