> On Jan 22, 2021, at 12:07 PM, Matt Coleman <[email protected]> wrote:
> 
>> On Jan 22, 2021, at 11:30 AM, Laine Stump <[email protected]> wrote:
>> 
>> On 1/22/21 11:05 AM, Laine Stump wrote:
>>> 1) There are several cleanup functions in external libraries that in the 
>>> past were only called after checking that the pointer was != NULL. 
>>> g_autoptr cleanups need to handle being called with NULL as a NOP, and I'm 
>>> concerned that these functions may not behave properly in that case. Can 
>>> you either verify that it's safe to call them with NULL, or provide a 
>>> wrapper function that checks for NULL and use that as the cleanup?
>> 
>> I asked about item (2) on IRC just now, and danpb produced a short example 
>> program that proves it is okay to use values from auto-freed objects as the 
>> return value of a function. So there is only question (1) left. Let me know 
>> and I'll either push or wait for modified patches accordingly.
> 
> For WsXmlDocH, GLib's documentation says that 
> G_DEFINE_AUTOPTR_CLEANUP_FUNC() is NULL-safe:
>> The function will not be called if the variable to be cleaned up contains 
>> NULL.
> 
> https://developer.gnome.org/glib/stable/glib-Miscellaneous-Macros.html#G-DEFINE-AUTOPTR-CLEANUP-FUNC:CAPS
> 
> For client_opt_t and filter_t, the third parameter to 
> G_DEFINE_AUTO_CLEANUP_FREE_FUNC() was used to prevent the types' free 
> functions from being called if they're NULL.

Oh, woops. Caffeine hasn't kicked in. I got that all backwards.

There is an issue with client_opt_t, which doesn't have a NULL check:
https://github.com/Openwsman/openwsman/blob/bcf670dba4d81ec1669cfd1dd7e2b57f0957e534/src/lib/wsman-client.c#L361

filter_t does have a NULL check:
https://github.com/Openwsman/openwsman/blob/bcf670dba4d81ec1669cfd1dd7e2b57f0957e534/src/lib/wsman-filter.c#L250

-- 
Matt


Reply via email to