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 */
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);
}