From 164c374b75f87c6765a705c4418ab7005a2d356f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 10 Jan 2020 19:30:22 +0400 Subject: qstring: add qstring_free() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Similar to g_string_free(), optionally return the underlying char*. Signed-off-by: Marc-André Lureau Message-Id: <20200110153039.1379601-10-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- qobject/qstring.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'qobject') diff --git a/qobject/qstring.c b/qobject/qstring.c index 1c6897df00..b66a2c35f2 100644 --- a/qobject/qstring.c +++ b/qobject/qstring.c @@ -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); } -- cgit v1.2.3