Daniel P. Berrangé <berra...@redhat.com> writes:
> Both GCC and CLang support a C extension attribute((cleanup)) which > allows you to define a function that is invoked when a stack variable > exits scope. This typically used to free the memory allocated to it, > though you're not restricted to this. For example it could be used to > unlock a mutex. <snip> > > GOOD: > g_autofree char *wibble = g_strdup("wibble") > ... > return g_steal_pointer(wibble); > > g_steal_pointer is an inline function which simply copies > the pointer to a new variable, and sets the original variable > to NULL, thus avoiding cleanup. Surely this is a particular use case where you wouldn't use g_autofree to declare the variable as you intending to return it to the outer scope? -- Alex Bennée