summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2013-06-14 11:19:31 -0300
committerMatthias Clasen <mclasen@redhat.com>2013-06-29 23:23:36 -0400
commitb7b38384010be4385ba9a1872dc3eb7a0134cbe0 (patch)
tree2c8f98b49bde4199fb8d975871ab26fc1394b121
parenta3182e3b9a229292be5370542915ae4cc8cc6e25 (diff)
downloadglib-b7b38384010be4385ba9a1872dc3eb7a0134cbe0.tar.gz
Make G_STRFUNC consistent across platforms
Recent versions of clang have changed __PRETTY_FUNCTION__ to always include the function signature (rather than including the function signature in C++ but not in C like gcc does). This causes G_STRFUNC to give different results under clang and gcc, causing some tests with g_test_expect_messages() to fail. Fix this by only using __PRETTY_FUNCTION__ in C++, and using __FUNCTION__ in C. (Under gcc this change has no effect.) https://bugzilla.gnome.org/show_bug.cgi?id=702147
-rw-r--r--glib/gmacros.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/glib/gmacros.h b/glib/gmacros.h
index 6149067bc..9526cbda5 100644
--- a/glib/gmacros.h
+++ b/glib/gmacros.h
@@ -174,11 +174,11 @@
#endif
/* Provide a string identifying the current function, non-concatenatable */
-#if defined (__GNUC__)
+#if defined (__GNUC__) && defined (__cplusplus)
# define G_STRFUNC ((const char*) (__PRETTY_FUNCTION__))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 19901L
# define G_STRFUNC ((const char*) (__func__))
-#elif defined(_MSC_VER) && (_MSC_VER > 1300)
+#elif defined (__GNUC__) || (defined(_MSC_VER) && (_MSC_VER > 1300))
# define G_STRFUNC ((const char*) (__FUNCTION__))
#else
# define G_STRFUNC ((const char*) ("???"))