[PRINTING]
authorColin Finck <colin@reactos.org>
Wed, 10 May 2017 13:03:08 +0000 (13:03 +0000)
committerColin Finck <colin@reactos.org>
Wed, 10 May 2017 13:03:08 +0000 (13:03 +0000)
SetDefaultPrinterW needs to fail with ERROR_INVALID_PRINTER_NAME if the input parameter is invalid. Also add a test for that.

svn path=/trunk/; revision=74518

reactos/win32ss/printing/base/winspool/printers.c
rostests/apitests/winspool/GetDefaultPrinter.c

index 53b113f..5b95cbc 100644 (file)
@@ -817,7 +817,7 @@ SetDefaultPrinterW(LPCWSTR pszPrinter)
         dwErrorCode = (DWORD)RegQueryValueExW(hDevicesKey, pszPrinter, NULL, NULL, NULL, &cbPrinterValueData);
         if (dwErrorCode == ERROR_FILE_NOT_FOUND)
         {
-            // The caller gave us an invalid printer name, return with ERROR_FILE_NOT_FOUND.
+            dwErrorCode = ERROR_INVALID_PRINTER_NAME;
             goto Cleanup;
         }
         else if (dwErrorCode != ERROR_SUCCESS)
index 1559913..381e344 100644 (file)
@@ -45,5 +45,10 @@ START_TEST(GetDefaultPrinter)
     ok(SetDefaultPrinterW(pwszDefaultPrinter), "SetDefaultPrinterW returns FALSE!\n");
     ok(GetLastError() == ERROR_SUCCESS, "SetDefaultPrinterW returns error %lu!\n", GetLastError());
 
+    // SetDefaultPrinterW with an invalid printer name needs to fail with ERROR_INVALID_PRINTER_NAME.
+    SetLastError(0xDEADBEEF);
+    ok(!SetDefaultPrinterW(L"INVALID PRINTER NAME!!!"), "SetDefaultPrinterW returns TRUE!\n");
+    ok(GetLastError() == ERROR_INVALID_PRINTER_NAME, "SetDefaultPrinterW returns error %lu!\n", GetLastError());
+
     HeapFree(GetProcessHeap(), 0, pwszDefaultPrinter);
 }