Remove unused PHP_AC_BROKEN_SPRINTF and AC_ZEND_BROKEN_SPRINTF

The sprintf function has been normalized to php_sprintf via
61364b5bb1.

This patch removes the checks to make a custom sprintf function

The ZEND_BROKEN_SPRINTF has been removed and the
hardcoded #define zend_sprintf sprintf is used.

The php_sprintf and zend_sprintf are now symbols to sprintf.

This patch now removes the custom PHP definitions of the php_sprintf and
zend_sprintf functions in favor of the C99 sprintf which is also
standardized in C89 already. Once, on some systems sprintf didn't behave
in same way.
This commit is contained in:
Peter Kokot 2019-02-20 23:17:15 +01:00
parent 6926cf356e
commit b33fa18eab
15 changed files with 11 additions and 148 deletions

View File

@ -80,7 +80,6 @@ LIBZEND_CHECK_INT_TYPE(uint32_t)
dnl Checks for library functions. dnl Checks for library functions.
AC_FUNC_ALLOCA AC_FUNC_ALLOCA
AC_CHECK_FUNCS(memcpy strdup getpid kill strtod strtol finite fpclass sigsetjmp) AC_CHECK_FUNCS(memcpy strdup getpid kill strtod strtol finite fpclass sigsetjmp)
AC_ZEND_BROKEN_SPRINTF
AC_CHECK_DECLS([isfinite, isnan, isinf], [], [], [[#include <math.h>]]) AC_CHECK_DECLS([isfinite, isnan, isinf], [], [], [[#include <math.h>]])

View File

@ -58,27 +58,6 @@ fp_except x = (fp_except) 0;
fi fi
]) ])
dnl
dnl Check for broken sprintf()
dnl
AC_DEFUN([AC_ZEND_BROKEN_SPRINTF],[
AC_CACHE_CHECK(whether sprintf is broken, ac_cv_broken_sprintf,[
AC_RUN_IFELSE([AC_LANG_SOURCE([[main() {char buf[20];exit(sprintf(buf,"testing 123")!=11); }]])],[
ac_cv_broken_sprintf=no
],[
ac_cv_broken_sprintf=yes
],[
ac_cv_broken_sprintf=no
])
])
if test "$ac_cv_broken_sprintf" = "yes"; then
ac_result=1
else
ac_result=0
fi
AC_DEFINE_UNQUOTED(ZEND_BROKEN_SPRINTF, $ac_result, [Whether sprintf is broken])
])
dnl x87 floating point internal precision control checks dnl x87 floating point internal precision control checks
dnl See: http://wiki.php.net/rfc/rounding dnl See: http://wiki.php.net/rfc/rounding
AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION],[ AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION],[

View File

@ -40,6 +40,8 @@
#include "zend_smart_string_public.h" #include "zend_smart_string_public.h"
#include "zend_signal.h" #include "zend_signal.h"
#define zend_sprintf sprintf
#define HANDLE_BLOCK_INTERRUPTIONS() ZEND_SIGNAL_BLOCK_INTERRUPTIONS() #define HANDLE_BLOCK_INTERRUPTIONS() ZEND_SIGNAL_BLOCK_INTERRUPTIONS()
#define HANDLE_UNBLOCK_INTERRUPTIONS() ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() #define HANDLE_UNBLOCK_INTERRUPTIONS() ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()

View File

@ -131,7 +131,7 @@ static zend_string *zend_build_runtime_definition_key(zend_string *name, unsigne
{ {
zend_string *result; zend_string *result;
char char_pos_buf[32]; char char_pos_buf[32];
size_t char_pos_len = zend_sprintf(char_pos_buf, "%p", lex_pos); size_t char_pos_len = sprintf(char_pos_buf, "%p", lex_pos);
zend_string *filename = CG(active_op_array)->filename; zend_string *filename = CG(active_op_array)->filename;
/* NULL, name length, filename length, last accepting char position length */ /* NULL, name length, filename length, last accepting char position length */
@ -6166,7 +6166,7 @@ static zend_string *zend_generate_anon_class_name(unsigned char *lex_pos) /* {{{
{ {
zend_string *result; zend_string *result;
char char_pos_buf[32]; char char_pos_buf[32];
size_t char_pos_len = zend_sprintf(char_pos_buf, "%p", lex_pos); size_t char_pos_len = sprintf(char_pos_buf, "%p", lex_pos);
zend_string *filename = CG(active_op_array)->filename; zend_string *filename = CG(active_op_array)->filename;
/* NULL, name length, filename length, last accepting char position length */ /* NULL, name length, filename length, last accepting char position length */

View File

@ -63,8 +63,6 @@ extern "C++" {
#define zend_isnan(x) _isnan(x) #define zend_isnan(x) _isnan(x)
#endif #endif
#define zend_sprintf sprintf
#ifndef __cplusplus #ifndef __cplusplus
/* This will cause the compilation process to be MUCH longer, but will generate /* This will cause the compilation process to be MUCH longer, but will generate
* a much quicker PHP binary * a much quicker PHP binary

View File

@ -93,7 +93,7 @@ static void zend_ini_do_op(char type, zval *result, zval *op1, zval *op2)
break; break;
} }
str_len = zend_sprintf(str_result, "%d", i_result); str_len = sprintf(str_result, "%d", i_result);
ZVAL_NEW_STR(result, zend_string_init(str_result, str_len, ZEND_SYSTEM_INI)); ZVAL_NEW_STR(result, zend_string_init(str_result, str_len, ZEND_SYSTEM_INI));
} }
/* }}} */ /* }}} */

View File

@ -1,38 +0,0 @@
/*
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.zend.com/license/2_00.txt. |
| If you did not receive a copy of the Zend license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@zend.com so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Authors: Andi Gutmans <andi@php.net> |
| Zeev Suraski <zeev@php.net> |
+----------------------------------------------------------------------+
*/
#include <stdio.h>
#include "zend.h"
#include <stdarg.h>
#if ZEND_BROKEN_SPRINTF
int zend_sprintf(char *buffer, const char *format, ...)
{
int len;
va_list args;
va_start(args, format);
len = vsprintf(buffer, format, args);
va_end(args);
return len;
}
#endif

View File

@ -1446,28 +1446,6 @@ AC_DEFUN([PHP_MISSING_FCLOSE_DECL],[
]) ])
]) ])
dnl
dnl PHP_AC_BROKEN_SPRINTF
dnl
dnl Check for broken sprintf(), C99 conformance
dnl
AC_DEFUN([PHP_AC_BROKEN_SPRINTF],[
AC_CACHE_CHECK(whether sprintf is broken, ac_cv_broken_sprintf,[
AC_RUN_IFELSE([AC_LANG_SOURCE([[main() {char buf[20];exit(sprintf(buf,"testing 123")!=11); }]])],[
ac_cv_broken_sprintf=no
],[
ac_cv_broken_sprintf=yes
],[
ac_cv_broken_sprintf=no
])
])
if test "$ac_cv_broken_sprintf" = "yes"; then
AC_DEFINE(PHP_BROKEN_SPRINTF, 1, [Whether sprintf is C99 conform])
else
AC_DEFINE(PHP_BROKEN_SPRINTF, 0, [Whether sprintf is C99 conform])
fi
])
dnl dnl
dnl PHP_AC_BROKEN_SNPRINTF dnl PHP_AC_BROKEN_SNPRINTF
dnl dnl

View File

@ -54,12 +54,6 @@ AH_BOTTOM([
#include <string.h> #include <string.h>
#if ZEND_BROKEN_SPRINTF
int zend_sprintf(char *buffer, const char *format, ...);
#else
# define zend_sprintf sprintf
#endif
#if defined(__cplusplus) && __cplusplus >= 201103L #if defined(__cplusplus) && __cplusplus >= 201103L
extern "C++" { extern "C++" {
#include <cmath> #include <cmath>
@ -743,7 +737,6 @@ fi
AC_REPLACE_FUNCS(strlcat strlcpy explicit_bzero getopt) AC_REPLACE_FUNCS(strlcat strlcpy explicit_bzero getopt)
AC_FUNC_ALLOCA AC_FUNC_ALLOCA
dnl PHP_AC_BROKEN_SPRINTF
dnl PHP_AC_BROKEN_SNPRINTF dnl PHP_AC_BROKEN_SNPRINTF
PHP_DECLARED_TIMEZONE PHP_DECLARED_TIMEZONE
PHP_TIME_R_TYPE PHP_TIME_R_TYPE
@ -1495,7 +1488,7 @@ PHP_INSTALL_HEADERS([Zend/ TSRM/ include/ main/ main/streams/])
PHP_ADD_SOURCES(TSRM, TSRM.c tsrm_strtok_r.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1) PHP_ADD_SOURCES(TSRM, TSRM.c tsrm_strtok_r.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
PHP_ADD_SOURCES(main, main.c snprintf.c spprintf.c php_sprintf.c \ PHP_ADD_SOURCES(main, main.c snprintf.c spprintf.c \
fopen_wrappers.c alloca.c php_scandir.c \ fopen_wrappers.c alloca.c php_scandir.c \
php_ini.c SAPI.c rfc1867.c php_content_types.c strlcpy.c \ php_ini.c SAPI.c rfc1867.c php_content_types.c strlcpy.c \
strlcat.c explicit_bzero.c mergesort.c reentrancy.c php_variables.c php_ticks.c \ strlcat.c explicit_bzero.c mergesort.c reentrancy.c php_variables.c php_ticks.c \
@ -1518,7 +1511,7 @@ PHP_ADD_SOURCES(Zend, \
zend_execute_API.c zend_highlight.c zend_llist.c \ zend_execute_API.c zend_highlight.c zend_llist.c \
zend_vm_opcodes.c zend_opcode.c zend_operators.c zend_ptr_stack.c zend_stack.c \ zend_vm_opcodes.c zend_opcode.c zend_operators.c zend_ptr_stack.c zend_stack.c \
zend_variables.c zend.c zend_API.c zend_extensions.c zend_hash.c \ zend_variables.c zend.c zend_API.c zend_extensions.c zend_hash.c \
zend_list.c zend_builtin_functions.c zend_sprintf.c \ zend_list.c zend_builtin_functions.c \
zend_ini.c zend_sort.c zend_multibyte.c zend_ts_hash.c zend_stream.c \ zend_ini.c zend_sort.c zend_multibyte.c zend_ts_hash.c zend_stream.c \
zend_iterators.c zend_interfaces.c zend_exceptions.c zend_strtod.c zend_gc.c \ zend_iterators.c zend_interfaces.c zend_exceptions.c zend_strtod.c zend_gc.c \
zend_closures.c zend_float.c zend_string.c zend_signal.c zend_generators.c \ zend_closures.c zend_float.c zend_string.c zend_signal.c zend_generators.c \

View File

@ -42,7 +42,7 @@ static inline double mysql_float_to_double(float fp4, int decimals) {
if (decimals < 0) { if (decimals < 0) {
php_gcvt(fp4, FLT_DIG, '.', 'e', num_buf); php_gcvt(fp4, FLT_DIG, '.', 'e', num_buf);
} else { } else {
php_sprintf(num_buf, "%.*f", decimals, fp4); sprintf(num_buf, "%.*f", decimals, fp4);
} }
return zend_strtod(num_buf, NULL); return zend_strtod(num_buf, NULL);

View File

@ -123,8 +123,6 @@ typedef struct _user_tick_function_entry {
static void user_shutdown_function_dtor(zval *zv); static void user_shutdown_function_dtor(zval *zv);
static void user_tick_function_dtor(user_tick_function_entry *tick_function_entry); static void user_tick_function_dtor(user_tick_function_entry *tick_function_entry);
#undef sprintf
/* {{{ arginfo */ /* {{{ arginfo */
/* {{{ main/main.c */ /* {{{ main/main.c */
ZEND_BEGIN_ARG_INFO(arginfo_set_time_limit, 0) ZEND_BEGIN_ARG_INFO(arginfo_set_time_limit, 0)

View File

@ -36,8 +36,7 @@
#include "zend_API.h" #include "zend_API.h"
#undef sprintf #define php_sprintf sprintf
#define sprintf php_sprintf
/* Operating system family definition */ /* Operating system family definition */
#ifdef PHP_WIN32 #ifdef PHP_WIN32

View File

@ -1,39 +0,0 @@
/*
+----------------------------------------------------------------------+
| PHP Version 7 |
+----------------------------------------------------------------------+
| Copyright (c) The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Jaakko Hyvätti <jaakko.hyvatti@iki.fi> |
+----------------------------------------------------------------------+
*/
#include <stdio.h>
#include <stdarg.h>
#include "php.h"
#ifdef PHP_WIN32
#include "config.w32.h"
#else
#include <php_config.h>
#endif
PHPAPI int
php_sprintf (char*s, const char* format, ...)
{
va_list args;
int ret;
va_start (args, format);
s[0] = '\0';
ret = vsprintf (s, format, args);
va_end (args);
return (ret < 0) ? -1 : ret;
}

View File

@ -82,7 +82,6 @@ PHPAPI int ap_php_snprintf(char *, size_t, const char *, ...) ZEND_ATTRIBUTE_FOR
PHPAPI int ap_php_vsnprintf(char *, size_t, const char *, va_list ap); PHPAPI int ap_php_vsnprintf(char *, size_t, const char *, va_list ap);
PHPAPI int ap_php_vasprintf(char **buf, const char *format, va_list ap); PHPAPI int ap_php_vasprintf(char **buf, const char *format, va_list ap);
PHPAPI int ap_php_asprintf(char **buf, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3); PHPAPI int ap_php_asprintf(char **buf, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3);
PHPAPI int php_sprintf (char* s, const char* format, ...) PHP_ATTRIBUTE_FORMAT(printf, 2, 3);
PHPAPI char * php_gcvt(double value, int ndigit, char dec_point, char exponent, char *buf); PHPAPI char * php_gcvt(double value, int ndigit, char dec_point, char exponent, char *buf);
PHPAPI char * php_0cvt(double value, int ndigit, char dec_point, char exponent, char *buf); PHPAPI char * php_0cvt(double value, int ndigit, char dec_point, char exponent, char *buf);
PHPAPI char * php_conv_fp(char format, double num, PHPAPI char * php_conv_fp(char format, double num,
@ -118,11 +117,6 @@ END_EXTERN_C()
#define asprintf ap_php_asprintf #define asprintf ap_php_asprintf
#endif #endif
#ifdef sprintf
#undef sprintf
#endif
#define sprintf php_sprintf
typedef enum { typedef enum {
LM_STD = 0, LM_STD = 0,
#if SIZEOF_INTMAX_T #if SIZEOF_INTMAX_T

View File

@ -231,7 +231,7 @@ ADD_SOURCES("Zend", "zend_language_parser.c zend_language_scanner.c \
zend_llist.c zend_vm_opcodes.c zend_opcode.c zend_operators.c zend_ptr_stack.c \ zend_llist.c zend_vm_opcodes.c zend_opcode.c zend_operators.c zend_ptr_stack.c \
zend_stack.c zend_variables.c zend.c zend_API.c zend_extensions.c \ zend_stack.c zend_variables.c zend.c zend_API.c zend_extensions.c \
zend_hash.c zend_list.c zend_builtin_functions.c \ zend_hash.c zend_list.c zend_builtin_functions.c \
zend_sprintf.c zend_ini.c zend_sort.c zend_multibyte.c zend_ts_hash.c \ zend_ini.c zend_sort.c zend_multibyte.c zend_ts_hash.c \
zend_stream.c zend_iterators.c zend_interfaces.c zend_objects.c \ zend_stream.c zend_iterators.c zend_interfaces.c zend_objects.c \
zend_object_handlers.c zend_objects_API.c \ zend_object_handlers.c zend_objects_API.c \
zend_default_classes.c zend_execute.c zend_strtod.c zend_gc.c zend_closures.c \ zend_default_classes.c zend_execute.c zend_strtod.c zend_gc.c zend_closures.c \
@ -249,7 +249,7 @@ if (VS_TOOLSET && VCVERS >= 1914) {
ADD_SOURCES("main", "main.c snprintf.c spprintf.c getopt.c fopen_wrappers.c \ ADD_SOURCES("main", "main.c snprintf.c spprintf.c getopt.c fopen_wrappers.c \
php_scandir.c php_ini.c SAPI.c rfc1867.c php_content_types.c strlcpy.c \ php_scandir.c php_ini.c SAPI.c rfc1867.c php_content_types.c strlcpy.c \
strlcat.c mergesort.c reentrancy.c php_variables.c php_ticks.c network.c \ strlcat.c mergesort.c reentrancy.c php_variables.c php_ticks.c network.c \
php_open_temporary_file.c output.c internal_functions.c php_sprintf.c \ php_open_temporary_file.c output.c internal_functions.c \
php_syslog.c"); php_syslog.c");
ADD_FLAG("CFLAGS_BD_MAIN", "/D ZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); ADD_FLAG("CFLAGS_BD_MAIN", "/D ZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
if (VS_TOOLSET && VCVERS >= 1914) { if (VS_TOOLSET && VCVERS >= 1914) {