Re: cvs: php4 /main main.c
| From: | Zeev Suraski | Date: | Fri, 01 Sep 2000 09:58:03 +0000 |
| Subject: | Re: cvs: php4 /main main.c | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-1484@lists.php.net to get a copy of this message | ||
Why do you have a va_end() in there?
On Fri, 1 Sep 2000, Sascha Schumann wrote:
> sas Fri Sep 1 02:54:32 2000 EDT
>
> Modified files:
> /php4/main main.c
> Log:
> Hopefully last round of fixing varargs use.
>
> We don't need to create the log message twice, and by doing it only
> once we also avoid the orig_args trap.
>
>
> Index: php4/main/main.c
> diff -u php4/main/main.c:1.308 php4/main/main.c:1.309
> --- php4/main/main.c:1.308 Thu Aug 31 09:15:31 2000
> +++ php4/main/main.c Fri Sep 1 02:54:32 2000
> @@ -19,7 +19,7 @@
> */
>
>
> -/* $Id: main.c,v 1.308 2000/08/31 16:15:31 stas Exp $ */
> +/* $Id: main.c,v 1.309 2000/09/01 09:54:32 sas Exp $ */
>
>
> #include <stdio.h>
> @@ -329,6 +329,7 @@
> static void php_error_cb(int type, const char *error_filename, const uint error_lineno, const
> char *format, va_list orig_args)
> {
> char buffer[1024];
> + zend_bool buffer_ok = 0;
> int size = 0;
> ELS_FETCH();
> PLS_FETCH();
> @@ -366,6 +367,8 @@
> /* get include file name */
> if (PG(log_errors) || PG(display_errors) || (!module_initialized)) {
> size = vsnprintf(buffer, sizeof(buffer) - 1, format, orig_args);
> + buffer_ok = 1;
> + va_end(orig_args);
>
> buffer[sizeof(buffer) - 1] = 0;
>
> @@ -440,9 +443,11 @@
> if (PG(track_errors) && EG(active_symbol_table)) {
> pval *tmp;
>
> - size = vsnprintf(buffer, sizeof(buffer) - 1, format, orig_args);
> -
> - buffer[sizeof(buffer) - 1] = 0;
> + if (!buffer_ok) {
> + size = vsnprintf(buffer, sizeof(buffer) - 1, format, orig_args);
> + buffer[sizeof(buffer) - 1] = 0;
> + va_end(orig_args);
> + }
>
> ALLOC_ZVAL(tmp);
> INIT_PZVAL(tmp);
>
>
>
>
--
Zeev Suraski <zeev@zend.com>
http://www.zend.com/