On Monday 04 October 2010 19:03:21 Alexandre Julliard wrote: > Vitaly Perov <vitpe...@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. -- Best regards, Vitaly Perov