From: Sascha Schumann Date: Thu, 28 Aug 2003 16:41:20 +0000 (+0000) Subject: Add format attribute to a number of functions X-Git-Tag: RELEASE_0_7~414 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2e36578cfd7c7a33dafcc2a48fbb0a718999af12;p=php Add format attribute to a number of functions Kill a few warnings --- diff --git a/Zend/zend.h b/Zend/zend.h index fea87092f3..5b0ae62947 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -158,6 +158,12 @@ char *alloca (); # define ZEND_ATTRIBUTE_MALLOC #endif +#if ZEND_GCC_VERSION >= 2007 +# define ZEND_ATTRIBUTE_FORMAT(type, idx, first) __attribute__ ((format(type, idx, first))) +#else +# define ZEND_ATTRIBUTE_FORMAT(type, idx, first) +#endif + #if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS) && defined(ZEND_WIN32)) && !(defined(ZTS) && defined(NETWARE)) && !(defined(ZTS) && defined(HPUX)) # define do_alloca(p) alloca(p) # define free_alloca(p) @@ -341,8 +347,8 @@ struct _zend_class_entry { #include "zend_stream.h" typedef struct _zend_utility_functions { - void (*error_function)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args); - int (*printf_function)(const char *format, ...); + void (*error_function)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) ZEND_ATTRIBUTE_FORMAT(printf, 4, 0); + int (*printf_function)(const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 1, 2); int (*write_function)(const char *str, uint str_length); FILE *(*fopen_function)(const char *filename, char **opened_path); void (*message_handler)(long message, void *data); @@ -442,7 +448,7 @@ ZEND_API int zend_print_zval_ex(zend_write_func_t write_func, zval *expr, int in ZEND_API void zend_print_zval_r(zval *expr, int indent TSRMLS_DC); ZEND_API void zend_print_flat_zval_r(zval *expr TSRMLS_DC); ZEND_API void zend_print_zval_r_ex(zend_write_func_t write_func, zval *expr, int indent TSRMLS_DC); -ZEND_API void zend_output_debug_string(zend_bool trigger_break, char *format, ...); +ZEND_API void zend_output_debug_string(zend_bool trigger_break, char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3); void zend_activate(TSRMLS_D); void zend_deactivate(TSRMLS_D); @@ -479,18 +485,18 @@ ZEND_API void free_estring(char **str_p); BEGIN_EXTERN_C() -extern ZEND_API int (*zend_printf)(const char *format, ...); +extern ZEND_API int (*zend_printf)(const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 1, 2); extern ZEND_API zend_write_func_t zend_write; extern ZEND_API FILE *(*zend_fopen)(const char *filename, char **opened_path); extern ZEND_API void (*zend_block_interruptions)(void); extern ZEND_API void (*zend_unblock_interruptions)(void); extern ZEND_API void (*zend_ticks_function)(int ticks); -extern ZEND_API void (*zend_error_cb)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args); +extern ZEND_API void (*zend_error_cb)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) ZEND_ATTRIBUTE_FORMAT(printf, 4, 0); extern void (*zend_on_timeout)(int seconds TSRMLS_DC); extern ZEND_API int (*zend_stream_open_function)(const char *filename, zend_file_handle *handle TSRMLS_DC); -ZEND_API void zend_error(int type, const char *format, ...); +ZEND_API void zend_error(int type, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3); void zenderror(char *error); diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 4f02af00d4..13e74e814d 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -470,8 +470,12 @@ ZEND_API void start_memory_manager(TSRMLS_D) ZEND_API void shutdown_memory_manager(int silent, int clean_cache TSRMLS_DC) { +#if ZEND_DEBUG || !defined(ZEND_MM) zend_mem_header *p, *t; +#endif +#if ZEND_DEBUG zend_uint grand_total_leaks=0; +#endif #if defined(ZEND_MM) && !ZEND_DEBUG if (clean_cache) { diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 5c9b905323..c0786f8ff3 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -245,7 +245,7 @@ ZEND_FUNCTION(func_get_arg) arg_count = (ulong) *p; if (requested_offset>=arg_count) { - zend_error(E_WARNING, "func_get_arg(): Argument %d not passed to function", requested_offset); + zend_error(E_WARNING, "func_get_arg(): Argument %ld not passed to function", requested_offset); RETURN_FALSE; } @@ -1461,6 +1461,7 @@ ZEND_FUNCTION(debug_print_backtrace) lineno = ptr->opline->lineno; } else { filename = NULL; + lineno = 0; } function_name = ptr->function_state.function->common.function_name; @@ -1516,6 +1517,7 @@ ZEND_FUNCTION(debug_print_backtrace) array_init(arg_array); add_next_index_string(arg_array, include_filename, 1); } + call_type = NULL; } zend_printf("#%-2d ", indent); if (class_name) { diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 30c36d92a2..7c1f005bb0 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1352,8 +1352,7 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) "If you would like to enable call-time pass-by-reference, you can set " "allow_call_time_pass_reference to true in your INI file. " "However, future versions may not support this any longer. ", - (function_ptr?function_ptr->common.function_name:"[runtime function name]"), - offset+1); + (function_ptr?function_ptr->common.function_name:"[runtime function name]")); } if (function_ptr) { diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 9f3b75afd9..3fed8b5264 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -789,13 +789,13 @@ fetch_string_dim: if (zend_hash_index_find(ht, index, (void **) &retval) == FAILURE) { switch (type) { case BP_VAR_R: - zend_error(E_NOTICE,"Undefined offset: %d", index); + zend_error(E_NOTICE,"Undefined offset: %ld", index); /* break missing intentionally */ case BP_VAR_IS: retval = &EG(uninitialized_zval_ptr); break; case BP_VAR_RW: - zend_error(E_NOTICE,"Undefined offset: %d", index); + zend_error(E_NOTICE,"Undefined offset: %ld", index); /* break missing intentionally */ case BP_VAR_W: { zval *new_zval = &EG(uninitialized_zval); @@ -2901,7 +2901,7 @@ int zend_recv_handler(ZEND_OPCODE_HANDLER_ARGS) if (zend_ptr_stack_get_arg(arg_num, (void **) ¶m TSRMLS_CC)==FAILURE) { zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, NULL TSRMLS_CC); - zend_error(E_WARNING, "Missing argument %d for %s()\n", EX(opline)->op1.u.constant.value.lval, get_active_function_name(TSRMLS_C)); + zend_error(E_WARNING, "Missing argument %ld for %s()\n", EX(opline)->op1.u.constant.value.lval, get_active_function_name(TSRMLS_C)); if (EX(opline)->result.op_type == IS_VAR) { PZVAL_UNLOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr); }