aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sciteco.h
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2023-07-03 04:27:49 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2023-07-03 04:27:49 +0300
commit41a02591b9d199a82bb24c23f3828102375137de (patch)
treed09d8a10eb2ed5d180a945421b933f673ce7a95c /src/sciteco.h
parent69b4bbb8341cfda5d8456ccbf951034d63e4340c (diff)
downloadsciteco-41a02591b9d199a82bb24c23f3828102375137de.tar.gz
introduced TECO_DEBUG_CLEANUP to mark destructors that should only be used for debug builds
* There is cleanup that is not strictly necessary, because it only frees memory which is freed on program termination anyway. * However, it helps to explicitly free everything for debugging memory leaks via Valgrind. * The new macro reduces the number of #ifdef statements. * On NDEBUG, the code of these functions will still be eliminated. * If functions are referenced only from the destructor, there will be no unused function warnings, even in NDEBUG.
Diffstat (limited to 'src/sciteco.h')
-rw-r--r--src/sciteco.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/sciteco.h b/src/sciteco.h
index 87bd973..5734c57 100644
--- a/src/sciteco.h
+++ b/src/sciteco.h
@@ -58,6 +58,16 @@ teco_is_failure(teco_bool_t x)
return x >= 0;
}
+/**
+ * Call function as destructor on debug builds.
+ * This should be used only if the cleanup is optional.
+ */
+#ifdef NDEBUG
+#define TECO_DEBUG_CLEANUP __attribute__((unused))
+#else
+#define TECO_DEBUG_CLEANUP __attribute__((destructor))
+#endif
+
/** TRUE if C is a control character */
#define TECO_IS_CTL(C) ((C) < ' ')
/** ASCII character to echo control character C */