Sophie

Sophie

distrib > Fedora > 17 > i386 > media > updates-src > by-pkgid > ab4b662b9827b6375ffd451bf4abd615 > files > 587

systemd-44-24.fc17.src.rpm

From fdfcc9bf1c66283e2031caaf78a32aa6684a8c46 Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Fri, 15 Feb 2013 09:36:58 +0100
Subject: [PATCH] add _cleanup_free_, _cleanup_close_

part of upstream commit 2fbe635a83a79f8889afec421ae3990ea106fb91
---
 src/shared/macro.h | 3 +++
 src/shared/util.c  | 9 +++++++++
 src/shared/util.h  | 4 ++++
 3 files changed, 16 insertions(+)

diff --git a/src/shared/macro.h b/src/shared/macro.h
index 2572a96..f82df89 100644
--- a/src/shared/macro.h
+++ b/src/shared/macro.h
@@ -188,6 +188,9 @@ static inline size_t IOVEC_INCREMENT(struct iovec *i, unsigned n, size_t k) {
         return k;
 }
 
+#define _cleanup_free_ __attribute__((cleanup(freep)))
+#define _cleanup_fclose_ __attribute__((cleanup(fclosep)))
+
 #include "log.h"
 
 #endif
diff --git a/src/shared/util.c b/src/shared/util.c
index faf428f..c41b9e0 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -5781,3 +5781,12 @@ bool in_initrd(void) {
 
         return saved;
 }
+
+void freep(void *p) {
+        free(*(void**) p);
+}
+
+void fclosep(FILE **f) {
+        if (*f)
+                fclose(*f);
+}
diff --git a/src/shared/util.h b/src/shared/util.h
index 5459810..81392f5 100644
--- a/src/shared/util.h
+++ b/src/shared/util.h
@@ -542,4 +542,8 @@ _malloc_ static inline void *memdup_multiply(const void *p, size_t a, size_t b)
 
         return memdup(p, a * b);
 }
+
+void freep(void *p);
+void fclosep(FILE **f);
+
 #endif