[PATCH] include: Add and use a global heap_strdupW() helper
Alexandre Julliard
julliard at winehq.org
Mon Feb 12 15:43:24 CST 2018
Michael Stefaniuc <mstefani at winehq.org> writes:
> On 02/12/2018 11:23 AM, Alexandre Julliard wrote:
>> Michael Stefaniuc <mstefani at winehq.org> writes:
>>
>>> +static inline WCHAR *heap_strdupW(const WCHAR *str)
>>> +{
>>> + WCHAR *dst;
>>> + SIZE_T len;
>>> +
>>> + if(!str)
>>> + return NULL;
>>> +
>>> + len = (lstrlenW(str) + 1) * sizeof(*str);
>>> + dst = heap_alloc(len);
>>> + if (dst)
>>> + memcpy(dst, str, len);
>>> +
>>> + return dst;
>>> +}
>>
>> I'm not sure the NULL check is a good idea.
> And I disagree with your disagreement!
>
> I just sent in
> [PATCH] wininet: Avoid passing NULL to heap_strdupW()
> to show how ugly that would make the code. And that's the stuff that
> just crashed due to the tests.
>
> If you want the NULL check removed for the other strdup variants,
> especially the heap_strdupAW(), that would uglify the code even more as
> that is used in a ton of A functions that just forward to the W functions.
The current usage is clean only because we are not checking for
allocation failure, but that's broken. If we add proper handling, then
the NULL checks will be needed anyway.
--
Alexandre Julliard
julliard at winehq.org
More information about the wine-devel
mailing list