diff --git a/dll/win32/comdlg32/printdlg.c b/dll/win32/comdlg32/printdlg.c index 0da728b124..a4ae4eae56 100644 --- a/dll/win32/comdlg32/printdlg.c +++ b/dll/win32/comdlg32/printdlg.c @@ -395,11 +395,30 @@ static INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name) { DWORD needed, num; INT i; +#if __REACTOS__ + BOOL ret; + LPPRINTER_INFO_2A pi; + ret = EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &needed, &num); + if (!ret) { + ERR("ret is '%d' Bytes Copied/Needed is '%d' Number of Structs is '%d' \n", ret, needed, num); + return 0; + } + pi = HeapAlloc(GetProcessHeap(), 0, needed); + ret = EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 2, (LPBYTE)pi, needed, &needed, + &num); + + if (!ret) { + ERR("ret is '%d' PrinterEnum Pointer is '%p' Bytes Copied/Needed is '%d' Number of Structs is '%d' \n", ret, pi, needed, num); + HeapFree(GetProcessHeap(), 0, pi); + return 0; + } +#else LPPRINTER_INFO_2A pi; EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &needed, &num); pi = HeapAlloc(GetProcessHeap(), 0, needed); EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 2, (LPBYTE)pi, needed, &needed, &num); +#endif SendDlgItemMessageA(hDlg, id, CB_RESETCONTENT, 0, 0);