diff options
| author | Antony Dovgal <tony2001@php.net> | 2006-08-24 11:06:02 +0000 |
|---|---|---|
| committer | Antony Dovgal <tony2001@php.net> | 2006-08-24 11:06:02 +0000 |
| commit | 0584dc011c38dc04a1297360509454619aaf929d (patch) | |
| tree | 4861abbd442bce88f8070a71876fbbc297991f6a | |
| parent | c42b3bf689389ae0f22448183c77dc96c7114bd2 (diff) | |
| download | php-git-0584dc011c38dc04a1297360509454619aaf929d.tar.gz | |
MFH: fix segfault in strptime() on 64bit Linuxes, caused by the missing declaration
| -rw-r--r-- | ext/standard/config.m4 | 20 | ||||
| -rw-r--r-- | ext/standard/datetime.c | 8 |
2 files changed, 24 insertions, 4 deletions
diff --git a/ext/standard/config.m4 b/ext/standard/config.m4 index cc1f95f313..d9961131c5 100644 --- a/ext/standard/config.m4 +++ b/ext/standard/config.m4 @@ -477,6 +477,26 @@ if test "$ac_cv_huge_val_nan" = "yes"; then 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 \ diff --git a/ext/standard/datetime.c b/ext/standard/datetime.c index 7e2a5b4434..ddb7249b35 100644 --- a/ext/standard/datetime.c +++ b/ext/standard/datetime.c @@ -20,10 +20,6 @@ /* $Id$ */ -#if HAVE_STRPTIME -#define _XOPEN_SOURCE -#endif - #include "php.h" #include "zend_operators.h" #include "datetime.h" @@ -85,6 +81,10 @@ PHPAPI char *php_std_date(time_t t TSRMLS_DC) #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) |
