Problems unveiled by the last version.c patch
Paul Vriens
paul.vriens at xs4all.nl
Fri Dec 17 05:04:46 CST 2004
Hi Dmitry,
> <pvriens at xs4all.nl> wrote:
>
>> trace:shell:SHELL_GetPathFromIDListA -- F:\temp, 0x00000000
> ...
>> trace:shell:SHGetPathFromIDListW -- L"F:\\temp", 0x00000000
>>
>> The main difference (apart from the A/W) is that SHGetPathFromIDListW
>> returns an extra backslash compared to the A-counterpart.
>
> If you mean a double backslash in the 2nd line of the above quote
> then it's just the escaping which debugtsr_w() performs.
>
> --
> Dmitry.
>
>
I think the problem lies in the fact the some of the procedures use
Unicode depending on the version and some don't care (or use some
default). Going to the traces I can see:
Call shell32.SHBrowseForFolder(3de5f760) ret=01003c8d
... (always calls SHBrowseForFolderA)
trace:shell:SHBrowseForFolderA
Ret shell32.SHBrowseForFolder() retval=77e30fc0 ret=01003c8d
...
Call shell32.SHGetPathFromIDList(77e30fc0,0100b720) ret=01003c99
trace:shell:SHGetPathFromIDListAW
... (checking the version)
trace:shell:SHGetPathFromIDListW
...
Ret shell32.SHGetPathFromIDList() retval=00000001 ret=01003c99
...
Call kernel32.lstrcpyA(0100a360,0100b720 "F") ret=01003ca9
So you see, we are mixing A and W now:
- SHBrowseForFolderA
- SHGetPathFromIDListW
- lstrcpyA
In this case does it mean we (I ?) have to implement SHBrowseForFolderAW
or is that the wrong path (as many calls don't do this and all of them
have to be checked/corrected)?
Cheers,
Paul.
More information about the wine-devel
mailing list