mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
docs: hacking: document preferred strdup alternatives
Recommend g_str(n)dup instead of VIR_STRDUP. 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
95f3a1fe3c
commit
da5c733524
@ -1275,18 +1275,14 @@ BAD:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
VIR_STRDUP(char *dst, const char *src);
|
||||
VIR_STRNDUP(char *dst, const char *src, size_t n);
|
||||
dst = g_strdup(src);
|
||||
dst = g_strndup(src, n);
|
||||
</pre>
|
||||
<p>
|
||||
You should avoid using strdup or strndup directly as they do not report
|
||||
out-of-memory error, and do not allow a NULL source. Use
|
||||
VIR_STRDUP or VIR_STRNDUP macros instead, which return 0 for
|
||||
NULL source, 1 for successful copy, and -1 for allocation
|
||||
failure with the error already reported. In very
|
||||
specific cases, when you don't want to report the out-of-memory error, you
|
||||
can use VIR_STRDUP_QUIET or VIR_STRNDUP_QUIET, but such usage is very rare
|
||||
and usually considered a flaw.
|
||||
You should avoid using strdup or strndup directly as they do not handle
|
||||
out-of-memory errors, and do not allow a NULL source.
|
||||
Use <code>g_strdup</code> and <code>g_strndup</code> from GLib which
|
||||
abort on OOM and handle NULL source by returning NULL.
|
||||
</p>
|
||||
|
||||
<h2><a id="strbuf">Variable length string buffer</a></h2>
|
||||
|
Loading…
x
Reference in New Issue
Block a user