winspool: [3/3] Add GetPrintProcessorDirectoryA
Detlef Riekenberg
wine.dev at web.de
Fri Jun 2 07:40:59 CDT 2006
Am Freitag, den 02.06.2006, 11:30 +0200 schrieb Alexandre Julliard:
> Detlef Riekenberg <wine.dev at web.de> writes:
>
> > + if (ret) {
> > + needed = WideCharToMultiByte( CP_ACP, 0, InfoW, -1, (LPSTR)Info, cbBuf, NULL, NULL);
> > + if (pcbNeeded) *pcbNeeded = needed;
> > + ret = (needed > cbBuf) ? FALSE : TRUE;
>
> This check is wrong, WideCharToMultiByte will return 0 if the buffer
> is too small.
Hm.
Our documentation and MSDN states for WC2MB:
Success: If dstlen > 0, the number of characters written to dst.
http://source.winehq.org/WineAPI/WideCharToMultiByte.html
I took the code from GetPrinterDriverDirectoryA.
The UNICODE-Buffer was allocated with:
HeapAlloc(GetProcessHeap(), 0, cbBuf * sizeof(WCHAR));
The only Situation for WC2MB to run out of space here is, that
the ANSI-String has MultiByte-Characters in it.
Since our WC2MB returns 0, when the Destination-Buffer is to small,
something is wrong.
This situation is not tested in dlls/kernel/tests/*
I investigate in this.
--
By By ...
... Detlef
More information about the wine-devel
mailing list