mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-10 14:57:42 +00:00
docs: hacking: extend goto documentation
Replace reference to VIR_FREE with g_free and mention the use of g_auto cleanup attributes that eliminate most of label use. Signed-off-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Andrea Bolognani <abologna@redhat.com>
This commit is contained in:
parent
6cc9b74e0e
commit
5516311426
@ -1447,11 +1447,16 @@ BAD:
|
||||
single label at the end of the function. It's almost always ok
|
||||
to use this style. In particular, if the cleanup code only
|
||||
involves free'ing memory, then having multiple labels is
|
||||
overkill. VIR_FREE() and every function named XXXFree() in
|
||||
libvirt is required to handle NULL as its arg. Thus you can
|
||||
overkill. g_free() and most of the functions named XXXFree() in
|
||||
libvirt is required to handle NULL as its arg. This does not
|
||||
apply to libvirt's public APIs. Thus you can
|
||||
safely call free on all the variables even if they were not yet
|
||||
allocated (yes they have to have been initialized to NULL).
|
||||
This is much simpler and clearer than having multiple labels.
|
||||
Note that most of libvirt's type declarations can be marked with
|
||||
either <code>g_autofree</code> or <code>g_autoptr</code> which uses
|
||||
the compiler's <code>__attribute__((cleanup))</code> that calls
|
||||
the appropriate free function when the variable goes out of scope.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
Loading…
Reference in New Issue
Block a user