derick Tue Sep 4 11:19:33 2007 UTC
Modified files:
/php-src/main snprintf.c
Log:
- We have to store the original (allocated) pointer here as it was freed after
the pointer itself was modified, otherwise we'll get an invalid free error
here.
http://cvs.php.net/viewvc.cgi/php-src/main/snprintf.c?r1=1.58&r2=1.59&diff_format=u
Index: php-src/main/snprintf.c
diff -u php-src/main/snprintf.c:1.58 php-src/main/snprintf.c:1.59
--- php-src/main/snprintf.c:1.58 Fri Aug 3 14:30:59 2007
+++ php-src/main/snprintf.c Tue Sep 4 11:19:33 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: snprintf.c,v 1.58 2007/08/03 14:30:59 tony2001 Exp $ */
+/* $Id: snprintf.c,v 1.59 2007/09/04 11:19:33 derick Exp $ */
#include "php.h"
@@ -597,7 +597,7 @@
char num_buf[NUM_BUF_SIZE];
char char_buf[2]; /* for printing %% and
%<unknown> */
- zend_bool free_s; /* free string if allocated here */
+ char *s_to_free; /* tmp var to keep the string to be freed in */
#ifdef HAVE_LOCALE_H
struct lconv *lconv = NULL;
@@ -630,7 +630,7 @@
alternate_form = print_sign = print_blank = NO;
pad_char = ' ';
prefix_char = NUL;
- free_s = 0;
+ s_to_free = NULL;
s_unicode = 0;
fmt++;
@@ -989,7 +989,7 @@
return (cc);
}
s = res;
- free_s = 1;
+ s_to_free = s;
pad_char = ' ';
break;
@@ -1202,7 +1202,7 @@
s++;
}
- if (free_s) efree(s);
+ if (s_to_free) efree(s_to_free);
if (adjust_width && adjust == LEFT && min_width > s_len)
PAD(min_width, s_len, pad_char);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php