winspool.drv: return maximum possible size of the buffer when no buffer specified
Vitaly Perov
vitperov at etersoft.ru
Mon Oct 4 10:46:11 CDT 2010
On Monday 04 October 2010 19:03:21 Alexandre Julliard wrote:
> Vitaly Perov <vitperov at 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
More information about the wine-devel
mailing list