summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Persch <chpe@gnome.org>2013-10-21 14:44:49 +0200
committerChristian Persch <chpe@gnome.org>2013-10-21 14:44:49 +0200
commit8ba987599ba6045dfe422e527d51aa3e090cd812 (patch)
tree38e848036c1d59c2a61b87c6df09f4fbd3ee564d
parent4d7415264738f03e4e72600b24883adc93d7307a (diff)
downloadlibgsystem-8ba987599ba6045dfe422e527d51aa3e090cd812.tar.gz
localalloc: Add gs_free_error
-rw-r--r--gsystem-local-alloc.c6
-rw-r--r--gsystem-local-alloc.h8
2 files changed, 14 insertions, 0 deletions
diff --git a/gsystem-local-alloc.c b/gsystem-local-alloc.c
index fa4971d..3879b00 100644
--- a/gsystem-local-alloc.c
+++ b/gsystem-local-alloc.c
@@ -148,3 +148,9 @@ gs_local_strfreev (void *loc)
{
_gs_local_free(char **, g_strfreev);
}
+
+void
+gs_local_free_error (void *loc)
+{
+ _gs_local_free(GError*, g_error_free);
+}
diff --git a/gsystem-local-alloc.h b/gsystem-local-alloc.h
index 4c63dcf..150748c 100644
--- a/gsystem-local-alloc.h
+++ b/gsystem-local-alloc.h
@@ -41,6 +41,7 @@ void gs_local_hashtable_unref (void *loc);
void gs_local_checksum_free (void *loc);
void gs_local_bytes_unref (void *loc);
void gs_local_strfreev (void *loc);
+void gs_local_free_error (void *loc);
/**
* gs_free:
@@ -137,6 +138,13 @@ void gs_local_strfreev (void *loc);
*/
#define gs_strfreev __attribute__ ((cleanup(gs_local_strfreev)))
+/**
+ * gs_free_error:
+ *
+ * Call g_error_free() on a variable location when it goes out of scope.
+ */
+#define gs_free_error __attribute__ ((cleanup(gs_local_free_error)))
+
G_END_DECLS
#endif