snprintf defined as ap_php_snprintf

php.internals

Jeff Olhoeft

21 years ago
Hello, We recently upgraded a system from PHP 4.3.4 to 4.3.10, and tripped over a problem with snprintf. One of our PHP extension modules started failing, causing Apache to exit with code 0177. Investigation showed the culprit to be snprintf. It turns out that in 4.3.10, snprintf is #defined to be ap_php_snprintf. If we #undef snprintf (thus using glibc's snprintf), the problem is cleared up. In this segment of the diff between versions 1.178.2.9 and 1.178.2.8 of php.h, you'll see that tests for the existence of a system snprintf were removed. -#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF) || PHP_BROKEN_SPRINTF || PHP_BROKEN_SNPRINTF || PHP_BROKEN_VSNPRINTF #include "snprintf.h" -#endif Is this a deliberate change? Is there some way to tell configure to use the system snprintf instead of the PHP version? Thanks, Jeff

Derick Rethans

21 years ago
On Thu, 3 Feb 2005, Jeff Olhoeft wrote:
> Hello, > > We recently upgraded a system from PHP 4.3.4 to 4.3.10, and tripped > over a problem with snprintf. One of our PHP extension modules > started failing, causing Apache to exit with code 0177. Investigation > showed the culprit to be snprintf. It turns out that in 4.3.10, > snprintf is #defined to be ap_php_snprintf. If we #undef snprintf > (thus using glibc's snprintf), the problem is cleared up. > > In this segment of the diff between versions 1.178.2.9 and 1.178.2.8 > of php.h, you'll see that tests for the existence of a system snprintf > were removed. > > -#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF) || > PHP_BROKEN_SPRINTF || PHP_BROKEN_SNPRINTF || PHP_BROKEN_VSNPRINTF > #include "snprintf.h" > -#endif > > Is this a deliberate change? Is there some way to tell configure to > use the system snprintf instead of the PHP version?
You should always been using the ap_php_snprintf() one as that has an extra modified %F for non-locale aware number formatting. To make your extension work, make sure to include main/snprintf.h. regards, Derick
-- Derick Rethans http://derickrethans.nl | http://ez.no | http://xdebug.org