ID: 48872
Updated by: [email protected]
Reported By: nospam at hjcms dot de
Status: Analyzed
Bug Type: Compile Failure
Operating System: Linux
PHP Version: 5.3.0
New Comment:
I guess something in the way of this should do:
Index: string.c
===================================================================
--- string.c (revision 284196)
+++ string.c (working copy)
@@ -587,14 +587,12 @@
#endif
#ifdef DECIMAL_POINT
case DECIMAL_POINT:
-#endif
-#ifdef RADIXCHAR
+#elif defined(RADIXCHAR)
case RADIXCHAR:
#endif
#ifdef THOUSANDS_SEP
case THOUSANDS_SEP:
-#endif
-#ifdef THOUSEP
+#elif defined(THOUSEP)
case THOUSEP:
#endif
#ifdef GROUPING
Previous Comments:
------------------------------------------------------------------------
[2009-07-10 18:45:42] [email protected]
>From http://www.gnu.org/s/libc/manual/html_node/The-Elegant-and-Fast-
Way.html:
"
DECIMAL_POINT
RADIXCHAR
The same as the value returned by localeconv in the decimal_point
element of the struct lconv.
The name RADIXCHAR is a deprecated alias still used in Unix98.
THOUSANDS_SEP
THOUSEP
The same as the value returned by localeconv in the thousands_sep
element of the struct lconv.
The name THOUSEP is a deprecated alias still used in Unix98.
"
For some reason these aren't handled with #ifdef's in the code..
------------------------------------------------------------------------
[2009-07-09 15:32:20] nospam at hjcms dot de
Description:
------------
-c /usr/src/packages/BUILD/php-5.3.0/ext/standard/string.c -o
ext/standard/string.lo
/usr/src/packages/BUILD/php-5.3.0/ext/standard/string.c: In
function 'zif_nl_langinfo':
/usr/src/packages/BUILD/php-5.3.0/ext/standard/string.c:592: error:
duplicate case value
/usr/src/packages/BUILD/php-5.3.0/ext/standard/string.c:589: error:
previously used here
/usr/src/packages/BUILD/php-5.3.0/ext/standard/string.c:598: error:
duplicate case value
/usr/src/packages/BUILD/php-5.3.0/ext/standard/string.c:595: error:
previously used here
gmake: *** [ext/standard/string.lo] Fehler 1
Reproduce code:
---------------
#ifdef DECIMAL_POINT
case DECIMAL_POINT:
#endif
#ifdef RADIXCHAR
case RADIXCHAR:
#endif
#ifdef THOUSANDS_SEP
case THOUSANDS_SEP:
#endif
#ifdef THOUSEP
case THOUSEP:
#endif
Expected result:
----------------
case mismatch with glibc 2.10.1
rpm -qf /usr/include/langinfo.h
glibc-devel-2.10.1-2009154
Actual result:
--------------
grep --color=auto -e DECIMAL_POINT -e RADIXCHAR -e THOUSANDS_SEP -e
THOUSEP /usr/include/langinfo.h
__MON_DECIMAL_POINT,
# define MON_DECIMAL_POINT __MON_DECIMAL_POINT
__MON_THOUSANDS_SEP,
# define MON_THOUSANDS_SEP __MON_THOUSANDS_SEP
_NL_MONETARY_DECIMAL_POINT_WC,
_NL_MONETARY_THOUSANDS_SEP_WC,
__DECIMAL_POINT = _NL_ITEM (__LC_NUMERIC, 0),
# define DECIMAL_POINT __DECIMAL_POINT
RADIXCHAR = __DECIMAL_POINT,
#define RADIXCHAR RADIXCHAR
__THOUSANDS_SEP,
# define THOUSANDS_SEP __THOUSANDS_SEP
THOUSEP = __THOUSANDS_SEP,
#define THOUSEP THOUSEP
_NL_NUMERIC_DECIMAL_POINT_WC,
_NL_NUMERIC_THOUSANDS_SEP_WC,
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=48872&edit=1