tony2001 Thu Aug 24 11:05:38 2006 UTC
Modified files:
/php-src/ext/standard config.m4 datetime.c
Log:
this fixes segfault in strptime() on 64bit Linuxes, caused by the missing
declaration
unfortunately defining _XOPEN_SOURCE breaks the build (some odd dependencies
in glibc headers) and this seems to be the best solution
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/config.m4?r1=1.83&r2=1.84&diff_format=u
Index: php-src/ext/standard/config.m4
diff -u php-src/ext/standard/config.m4:1.83 php-src/ext/standard/config.m4:1.84
--- php-src/ext/standard/config.m4:1.83 Wed Jan 4 12:57:04 2006
+++ php-src/ext/standard/config.m4 Thu Aug 24 11:05:38 2006
@@ -1,4 +1,4 @@
-dnl $Id: config.m4,v 1.83 2006/01/04 12:57:04 derick Exp $ -*- autoconf -*-
+dnl $Id: config.m4,v 1.84 2006/08/24 11:05:38 tony2001 Exp $ -*- autoconf -*-
divert(3)dnl
@@ -477,6 +477,26 @@
AC_DEFINE([HAVE_HUGE_VAL_NAN], 1, [whether HUGE_VAL + -HUGEVAL == NAN])
fi
+AC_CACHE_CHECK(whether strptime() declaration fails,
ac_cv_strptime_decl_fails,[
+ AC_TRY_COMPILE([
+#include <time.h>
+ ],[
+#ifndef HAVE_STRPTIME
+#error no strptime() on this platform
+#else
+/* use invalid strptime() declaration to see if it fails to compile */
+int strptime(const char *s, const char *format, struct tm *tm);
+#endif
+ ],[
+ ac_cv_strptime_decl_fails=no
+ ],[
+ ac_cv_strptime_decl_fails=yes
+ ])
+])
+if test "$ac_cv_strptime_decl_fails" = "yes"; then
+ AC_DEFINE([HAVE_STRPTIME_DECL_FAILS], 1, [whether strptime() declaration
fails])
+fi
+
PHP_CHECK_I18N_FUNCS
PHP_NEW_EXTENSION(standard, array.c base64.c basic_functions.c browscap.c
crc32.c crypt.c \
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/datetime.c?r1=1.138&r2=1.139&diff_format=u
Index: php-src/ext/standard/datetime.c
diff -u php-src/ext/standard/datetime.c:1.138
php-src/ext/standard/datetime.c:1.139
--- php-src/ext/standard/datetime.c:1.138 Sun Aug 20 18:20:59 2006
+++ php-src/ext/standard/datetime.c Thu Aug 24 11:05:38 2006
@@ -18,11 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: datetime.c,v 1.138 2006/08/20 18:20:59 iliaa Exp $ */
-
-#if HAVE_STRPTIME
-#define _XOPEN_SOURCE
-#endif
+/* $Id: datetime.c,v 1.139 2006/08/24 11:05:38 tony2001 Exp $ */
#include "php.h"
#include "zend_operators.h"
@@ -85,6 +81,10 @@
#if HAVE_STRPTIME
+#ifndef HAVE_STRPTIME_DECL_FAILS
+char *strptime(const char *s, const char *format, struct tm *tm);
+#endif
+
/* {{{ proto string strptime(string timestamp, string format)
Parse a time/date generated with strftime() */
PHP_FUNCTION(strptime)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php