]> granicus.if.org Git - graphviz/commitdiff
sparse: add a graphviz_exit function to general.h if STANDALONE
authorMagnus Jacobsson <Magnus.Jacobsson@berotec.se>
Sun, 16 Jan 2022 16:10:59 +0000 (17:10 +0100)
committerMagnus Jacobsson <Magnus.Jacobsson@berotec.se>
Mon, 31 Jan 2022 07:26:19 +0000 (08:26 +0100)
An previous commit added the same function to cgraph/exit.h, but that
library is not supposed to be used when STANDALONE is defined.

Towards https://gitlab.com/graphviz/graphviz/-/issues/2178.

lib/sparse/general.h

index f2b0d3fdd9e38301c0e9320deac77809481569d1..f481e33e76fcd68ae1d3ef733899852bfac33025 100644 (file)
@@ -65,6 +65,26 @@ __declspec(dllimport) extern unsigned char Verbose;
 extern unsigned char Verbose;
 #endif
 
+#ifdef __GNUC__
+// FIXME: use _Noreturn for all compilers when we move to C11
+#define NORETURN __attribute__((noreturn))
+#elif defined(_MSC_VER)
+#define NORETURN __declspec(noreturn)
+#else
+#define NORETURN /* nothing */
+#endif
+
+static inline NORETURN void graphviz_exit(int status) {
+#ifdef __MINGW32__
+  // workaround for https://gitlab.com/graphviz/graphviz/-/issues/2178
+  fflush(stdout);
+  fflush(stderr);
+#endif
+  exit(status);
+}
+
+#undef NORETURN
+
 #else  /* STANDALONE */
 #define CALLOC gcalloc
 #define MALLOC gmalloc