FW: shell32.SHDefExtractIcon implementation take
Rolf Kalbermatter
rolf.kalbermatter at citeng.com
Fri Dec 6 15:00:28 CST 2002
Mmmh, at first sight I thought damn how could this happen but then looking
at it I don't think there is a problem. I do not return the memory which was
allocated on the stack, but the HICONS allocated and returned by
PrivateExtractIconsW in the hIcons array! So this shouldn't be a problem
at all or are my brain cells garbled that much already?
Rolf Kalbermatter
> -----Original Message-----
> From: Uwe Bonnes [mailto:bon at elektron.ikp.physik.tu-darmstadt.de]
> Sent: Friday, December 06, 2002 9:53 PM
> To: wine-devel at winehq.com
> Cc: rolf.kalbermatter at citeng.com
> Subject: Re: FW: shell32.SHDefExtractIcon implementation take
>
>
>
>
> >>>>> "Rolf" == Rolf Kalbermatter <rolf.kalbermatter at citeng.com> writes:
> +/****************************************************************************
> + * SHDefExtractIconW [SHELL32.@]
> + */
> +HRESULT SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags,
> + HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize)
> +{
> + UINT ret;
> + HICON hIcons[2];
> ^^^^^^^^
>
> + WARN("%s %d 0x%08x %p %p %d, semi-stub\n", debugstr_w(pszIconFile),\
> iIndex, uFlags, phiconLarge, phiconSmall, nIconSize);
> +
> + ret = PrivateExtractIconsW(pszIconFile, iIndex, nIconSize,
> nIconSize, hIcons, NULL, 2, LR_DEFAULTCOLOR);
> + /* FIXME: deal with uFlags parameter which contains GIL_ flags */
> + if (ret == 0xFFFFFFFF)
> + return E_FAIL;
> + if (ret > 0) {
> + *phiconLarge = hIcons[0];
> ^^^^^^^^^^^^
> Rolf,
>
> this doesn't look right to me:
>
> You allocate space on the function local stack, then hand out a pointer to
> that memory and return from the function. No the function local stack is
> undefined and the pointers are dangling. I think the heap should be used for
> allocating the needed storage.
>
> Bye
>
> --
> Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
>
> Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
> --------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
More information about the wine-devel
mailing list