Made GetVersionEx() behave in accordance with the specification with
regard to error handling.
diff --git a/misc/version.c b/misc/version.c
index e5d5028..b1671be 100644
--- a/misc/version.c
+++ b/misc/version.c
@@ -17,6 +17,7 @@
#include "debugtools.h"
#include "neexe.h"
#include "winversion.h"
+#include "winerror.h"
DEFAULT_DEBUG_CHANNEL(ver)
@@ -331,6 +332,7 @@
if (v->dwOSVersionInfoSize != sizeof(OSVERSIONINFO16))
{
WARN("wrong OSVERSIONINFO size from app");
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
return FALSE;
}
v->dwMajorVersion = VersionData[ver].getVersionEx.dwMajorVersion;
@@ -351,6 +353,7 @@
if (v->dwOSVersionInfoSize != sizeof(OSVERSIONINFOA))
{
WARN("wrong OSVERSIONINFO size from app");
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
return FALSE;
}
v->dwMajorVersion = VersionData[ver].getVersionEx.dwMajorVersion;
@@ -372,6 +375,7 @@
if (v->dwOSVersionInfoSize!=sizeof(OSVERSIONINFOW))
{
WARN("wrong OSVERSIONINFO size from app");
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
return FALSE;
}
v->dwMajorVersion = VersionData[ver].getVersionEx.dwMajorVersion;