Make G_STRFUNC consistent across platforms
authorDan Winship <danw@gnome.org>
Fri, 14 Jun 2013 14:19:31 +0000 (11:19 -0300)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 30 Jun 2013 03:23:36 +0000 (23:23 -0400)
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

glib/gmacros.h

index 6149067..9526cbd 100644 (file)
 #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*) ("???"))