New tests failing ...

Stefan Leichter Stefan.Leichter at camLine.com
Sat Jan 18 03:08:27 CST 2003


Am Mittwoch 15 Januar 2003 16:34 schrieben Sie:
> Hi everyone,
>
> Just a quick note to say the new conformance tests (in
> dlls/winspool/tests/info.c) are failing for Wine running as NT-like OSes.
> For NT351, the results are:
>
> info.c:61: Test failed 1 of 1 time (100%):
>    [test instance 1]
>       info.c:61: Test failed: expected result == 0, got 1
>
> info.c:62: Test failed 1 of 1 time (100%):
>    [test instance 1]
>       info.c:62: Test failed: last error set to 87 instead of
> ERROR_INVALID_USER_BUFFER
>
> info.c:74: Test failed 1 of 1 time (100%):
>    [test instance 1]
>       info.c:74: Test failed: expected result == 0, got 1
>
> info.c:75: Test failed 1 of 1 time (100%):
>    [test instance 1]
>       info.c:75: Test failed: last error set to 87 instead of
> RPC_X_NULL_REF_POINTER
>
> info.c:84: Test failed 1 of 1 time (100%):
>    [test instance 1]
>       info.c:84: Test failed: expected result == 0, got 1
>
> info.c:85: Test failed 1 of 1 time (100%):
>    [test instance 1]
>       info.c:85: Test failed: last error set to 87 instead of
> RPC_X_NULL_REF_POINTER
>
ChangeLog
-------------
	fixed tests in dlls/winspool/tests/info.c when wine runs in NT-like mode

--- ../wine/dlls/winspool/info.c	Wed Jan 15 23:14:15 2003
+++ dlls/winspool/info.c	Sat Jan 18 00:41:13 2003
@@ -2445,11 +2445,15 @@
 BOOL WINAPI GetPrinterDriverDirectoryW(LPWSTR pName, LPWSTR pEnvironment,
 				       DWORD Level, LPBYTE pDriverDirectory,
 				       DWORD cbBuf, LPDWORD pcbNeeded)
-{
+{   OSVERSIONINFOA ver;
     DWORD needed;
 
     TRACE("(%s, %s, %ld, %p, %ld, %p)\n", debugstr_w(pName), 
           debugstr_w(pEnvironment), Level, pDriverDirectory, cbBuf, pcbNeeded);
+
+    ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
+    GetVersionExA( &ver);
+
     if(pName != NULL) {
         FIXME("pName = `%s' - unsupported\n", debugstr_w(pName));
 	SetLastError(ERROR_INVALID_PARAMETER);
@@ -2478,6 +2482,13 @@
         SetLastError(ERROR_INSUFFICIENT_BUFFER);
 	return FALSE;
     }
+    if ((ver.dwPlatformId == VER_PLATFORM_WIN32_NT) && 
+       (!pcbNeeded || !pDriverDirectory)) {
+        SetLastError(pcbNeeded ? ERROR_INVALID_USER_BUFFER 
+                               : RPC_X_NULL_REF_POINTER);
+	return FALSE;
+    }
+
     return TRUE;
 }
 
@@ -2495,7 +2506,8 @@
     INT len = cbBuf * sizeof(WCHAR)/sizeof(CHAR);
     WCHAR *driverDirectoryW = NULL;
 
-    if (len) driverDirectoryW = HeapAlloc( GetProcessHeap(), 0, len );
+    if (len && pDriverDirectory) 
+        driverDirectoryW = HeapAlloc( GetProcessHeap(), 0, len );
 
     if(pName) RtlCreateUnicodeStringFromAsciiz(&nameW, pName);
     else nameW.Buffer = NULL;
@@ -2503,7 +2515,8 @@
     else environmentW.Buffer = NULL;
 
     ret = GetPrinterDriverDirectoryW( nameW.Buffer, environmentW.Buffer, Level,
-				      (LPBYTE)driverDirectoryW, len, &pcbNeededW );
+				      (LPBYTE)driverDirectoryW, len, 
+                                      pcbNeeded ? &pcbNeededW : NULL);
     if (ret) {
         DWORD needed;
         needed = 1 + WideCharToMultiByte( CP_ACP, 0, driverDirectoryW, -1, 



More information about the wine-patches mailing list