diff --git a/winspool/winspool.c b/winspool/winspool.c index 49520a5d235..c950cd4a661 100644 --- a/winspool/winspool.c +++ b/winspool/winspool.c @@ -159,7 +159,7 @@ DWORD WINAPI DeviceCapabilities16(LPCSTR pDevice, LPCSTR pPort, WORD fwCapabilit { LPWORD papers; result = DeviceCapabilitiesA(pDevice, pPort, fwCapability, NULL, pDevMode ? (LPDEVMODEA)&devmode32[0] : NULL); - if (result) + if (result && (result != -1)) { LPWORD output = (LPWORD)pOutput; DWORD i, j = 0; @@ -184,6 +184,8 @@ DWORD WINAPI DeviceCapabilities16(LPCSTR pDevice, LPCSTR pPort, WORD fwCapabilit case DC_PAPERNAMES: { DWORD papers_count = DeviceCapabilitiesA(pDevice, pPort, DC_PAPERS, pOutput, pDevMode ? (LPDEVMODEA)&devmode32[0] : NULL); + if (papers_count == -1) + return -1; LPDWORD papers = (LPDWORD)HeapAlloc(GetProcessHeap(), 0, papers_count * sizeof(WORD)); DWORD i, j = 0; char (*names)[CCHPAPERNAME16] = !pOutput ? NULL : (char(*)[CCHPAPERNAME16])HeapAlloc(GetProcessHeap(), 0, papers_count * CCHPAPERNAME16 * sizeof(char));