Vitaly Perov vitperov@etersoft.ru writes:
@@ -1398,7 +1398,7 @@ static void convert_printerinfo_W_to_A(LPBYTE out, LPBYTE pPrintersW, dmA = DEVMODEdupWtoA(piW->pDevMode); if (dmA) { /* align DEVMODEA to a DWORD boundary */
len = (4 - ( (DWORD_PTR) ptr & 3)) & 3;
len = ptr ? (4 - ( (DWORD_PTR) ptr & 3)) & 3 : 3;
That doesn't make any sense.
On Monday 04 October 2010 19:03:21 Alexandre Julliard wrote:
Vitaly Perov vitperov@etersoft.ru writes:
@@ -1398,7 +1398,7 @@ static void convert_printerinfo_W_to_A(LPBYTE out, LPBYTE pPrintersW, dmA = DEVMODEdupWtoA(piW->pDevMode); if (dmA) { /* align DEVMODEA to a DWORD boundary */
len = (4 - ( (DWORD_PTR) ptr & 3)) & 3;
len = ptr ? (4 - ( (DWORD_PTR) ptr & 3)) & 3 :
3;
That doesn't make any sense.
May be I misunderstand something.
The bug is following:
CODE: GetJobW(hPrinter, job->job_id, 2, NULL, 0, &needed); FIXME("needed = %d\n",needed); ji2 = HeapAlloc(GetProcessHeap(), 0, needed); result = GetJobW(hPrinter, job->job_id, 2, (LPBYTE)ji2, needed, &needed); FIXME("needed = %d\n",needed);
CONSOLE OUTPUT: fixme:winspool:ScheduleJob needed = 366 fixme:winspool:ScheduleJob needed = 368
and result=false;
The patch fixes this bug.