qstring: add qstring_free()
Similar to g_string_free(), optionally return the underlying char*. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20200110153039.1379601-10-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
a3a162113e
commit
164c374b75
@ -33,6 +33,7 @@ void qstring_append_int(QString *qstring, int64_t value);
|
||||
void qstring_append(QString *qstring, const char *str);
|
||||
void qstring_append_chr(QString *qstring, int c);
|
||||
bool qstring_is_equal(const QObject *x, const QObject *y);
|
||||
char *qstring_free(QString *qstring, bool return_str);
|
||||
void qstring_destroy_obj(QObject *obj);
|
||||
|
||||
#endif /* QSTRING_H */
|
||||
|
@ -149,16 +149,33 @@ bool qstring_is_equal(const QObject *x, const QObject *y)
|
||||
qobject_to(QString, y)->string);
|
||||
}
|
||||
|
||||
/**
|
||||
* qstring_free(): Free the memory allocated by a QString object
|
||||
*
|
||||
* Return: if @return_str, return the underlying string, to be
|
||||
* g_free(), otherwise NULL is returned.
|
||||
*/
|
||||
char *qstring_free(QString *qstring, bool return_str)
|
||||
{
|
||||
char *rv = NULL;
|
||||
|
||||
if (return_str) {
|
||||
rv = qstring->string;
|
||||
} else {
|
||||
g_free(qstring->string);
|
||||
}
|
||||
|
||||
g_free(qstring);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
/**
|
||||
* qstring_destroy_obj(): Free all memory allocated by a QString
|
||||
* object
|
||||
*/
|
||||
void qstring_destroy_obj(QObject *obj)
|
||||
{
|
||||
QString *qs;
|
||||
|
||||
assert(obj != NULL);
|
||||
qs = qobject_to(QString, obj);
|
||||
g_free(qs->string);
|
||||
g_free(qs);
|
||||
qstring_free(qobject_to(QString, obj), FALSE);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user