[glib/wip/smcv/address-sanitizer: 26/28] glib-private: Add wrappers for telling AddressSanitizer to ignore leaks
- From: Simon McVittie <smcv src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/smcv/address-sanitizer: 26/28] glib-private: Add wrappers for telling AddressSanitizer to ignore leaks
- Date: Mon, 1 Feb 2021 11:21:41 +0000 (UTC)
commit 023793071b9fef6c23502fe7b558e9226f85b8db
Author: Simon McVittie <smcv collabora com>
Date: Fri Jan 29 19:11:11 2021 +0000
glib-private: Add wrappers for telling AddressSanitizer to ignore leaks
Signed-off-by: Simon McVittie <smcv collabora com>
glib/glib-private.h | 43 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
---
diff --git a/glib/glib-private.h b/glib/glib-private.h
index c2e7fd401..8de380d12 100644
--- a/glib/glib-private.h
+++ b/glib/glib-private.h
@@ -33,7 +33,50 @@
*/
#define _GLIB_ADDRESS_SANITIZER
+#include <sanitizer/lsan_interface.h>
+
+#endif
+
+/*
+ * g_ignore_leak:
+ * @p: any pointer
+ *
+ * Tell AddressSanitizer and similar tools that if the object pointed to
+ * by @p is leaked, it is not a problem. Use this to suppress memory leak
+ * reports when a potentially unreachable pointer is deliberately not
+ * going to be deallocated.
+ */
+static inline void
+g_ignore_leak (gconstpointer p)
+{
+#ifdef _GLIB_ADDRESS_SANITIZER
+ if (p != NULL)
+ __lsan_ignore_object (p);
+#endif
+}
+
+/*
+ * g_ignore_strv_leak:
+ * @strv: (nullable) (array zero-terminated=1): an array of strings
+ *
+ * The same as g_ignore_leak(), but for the memory pointed to by @strv,
+ * and for each element of @strv.
+ */
+static inline void
+g_ignore_strv_leak (GStrv strv)
+{
+#ifdef _GLIB_ADDRESS_SANITIZER
+ gchar **item;
+
+ if (strv)
+ {
+ g_ignore_leak (strv);
+
+ for (item = strv; *item != NULL; item++)
+ g_ignore_leak (*item);
+ }
#endif
+}
GMainContext * g_get_worker_context (void);
gboolean g_check_setuid (void);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]