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
This commit is contained in:
Dan Winship 2013-06-14 11:19:31 -03:00 committed by Matthias Clasen
parent a3182e3b9a
commit b7b3838401

View File

@ -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*) ("???"))