Avoid sizeof __func__ == 0 pitfall.
authorBruno Haible <bruno@clisp.org>
Thu, 27 Aug 2009 21:30:11 +0000 (23:30 +0200)
committerBruno Haible <bruno@clisp.org>
Thu, 27 Aug 2009 21:30:11 +0000 (23:30 +0200)
ChangeLog
doc/func.texi
tests/test-func.c

index aa562e05198f770b55be1a9e93ac9db4b94affdb..63e05d104254beec598b21909b0a0f4983e634bf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-27  Bruno Haible  <bruno@clisp.org>
+
+       * tests/test-func.c (main): Don't verify sizeof __func__ on SunPRO C
+       compilers.
+       * doc/func.texi: Document the SunPRO C bug.
+
 2009-08-27  Bruno Haible  <bruno@clisp.org>
 
        Fix link error on Solaris.
index 7a843c37412f172ecae4c42cfa901d57490a0f81..7225ca62993bd46327bf66d5371f50439b6debd6 100644 (file)
@@ -15,3 +15,6 @@ int main (void)
     printf ("%s: hello world\n", __func__);
 @}
 @end smallexample
+
+Note that @code{sizeof} cannot be applied to @code{__func__}: On SunPRO C
+compiler, @code{sizeof __func__} evaluates to 0.
index e55fcd5a975e286762403e6350fa47b7eb2cf251..8a3c465e73f6a39abe83a3a0e9d731889ab85080 100644 (file)
@@ -1,5 +1,5 @@
 /* Test whether __func__ is available
-   Copyright (C) 2008 Free Software Foundation, Inc.
+   Copyright (C) 2008-2009 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 int
 main ()
 {
+  ASSERT (strlen (__func__) > 0);
+
+  /* On SunPRO C 5.9, sizeof __func__ evaluates to 0.  The compiler warns:
+     "warning: null dimension: sizeof()".  */
+#if !defined __SUNPRO_C
   ASSERT (strlen (__func__) + 1 == sizeof __func__);
+#endif
+
   return 0;
 }