summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend.h18
-rw-r--r--Zend/zend_alloc.c4
-rw-r--r--Zend/zend_builtin_functions.c4
-rw-r--r--Zend/zend_compile.c3
-rw-r--r--Zend/zend_execute.c6
5 files changed, 23 insertions, 12 deletions
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 **) &param 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);
}