sniper Tue Jan 20 23:00:08 2004 EDT Modified files: /php-src/ext/standard formatted_print.c Log: - Fixed bug #26973 (*printf() + modifier broken) http://cvs.php.net/diff.php/php-src/ext/standard/formatted_print.c?r1=1.72&r2=1.73&ty=u Index: php-src/ext/standard/formatted_print.c diff -u php-src/ext/standard/formatted_print.c:1.72 php-src/ext/standard/formatted_print.c:1.73 --- php-src/ext/standard/formatted_print.c:1.72 Tue Jan 13 18:11:29 2004 +++ php-src/ext/standard/formatted_print.c Tue Jan 20 23:00:07 2004 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: formatted_print.c,v 1.72 2004/01/13 23:11:29 iliaa Exp $ */ +/* $Id: formatted_print.c,v 1.73 2004/01/21 04:00:07 sniper Exp $ */ #include <math.h> /* modf() */ #include "php.h" @@ -155,7 +155,7 @@ inline static void php_sprintf_appendstring(char **buffer, int *pos, int *size, char *add, int min_width, int max_width, char padding, - int alignment, int len, int sign, int expprec) + int alignment, int len, int neg, int expprec, int always_sign) { register int npad; int req_size; @@ -181,8 +181,8 @@ *buffer = erealloc(*buffer, *size); } if (alignment == ALIGN_RIGHT) { - if (sign && padding=='0') { - (*buffer)[(*pos)++] = '-'; + if ((neg || always_sign) && padding=='0') { + (*buffer)[(*pos)++] = (neg) ? '-' : '+'; add++; len--; copy_len--; @@ -241,13 +241,13 @@ number, &numbuf[i], i)); php_sprintf_appendstring(buffer, pos, size, &numbuf[i], width, 0, padding, alignment, (NUM_BUF_SIZE - 1) - i, - neg, 0); + neg, 0, always_sign); } inline static void php_sprintf_appenduint(char **buffer, int *pos, int *size, unsigned long number, - int width, char padding, int alignment, int always_sign) + int width, char padding, int alignment) { char numbuf[NUM_BUF_SIZE]; register unsigned long magn, nmagn; @@ -269,11 +269,9 @@ magn = nmagn; } while (magn > 0 && i > 0); - if (always_sign) - numbuf[--i] = '+'; PRINTF_DEBUG(("sprintf: appending %d as \"%s\", i=%d\n", number, &numbuf[i], i)); php_sprintf_appendstring(buffer, pos, size, &numbuf[i], width, 0, - padding, alignment, (NUM_BUF_SIZE - 1) - i, 0, 0); + padding, alignment, (NUM_BUF_SIZE - 1) - i, 0, 0, 0); } inline static void @@ -302,14 +300,14 @@ if (zend_isnan(number)) { sign = (number<0); php_sprintf_appendstring(buffer, pos, size, "NaN", 3, 0, padding, - alignment, precision, sign, 0); + alignment, precision, sign, 0, always_sign); return; } if (zend_isinf(number)) { sign = (number<0); php_sprintf_appendstring(buffer, pos, size, "INF", 3, 0, padding, - alignment, precision, sign, 0); + alignment, precision, sign, 0, always_sign); return; } @@ -382,7 +380,7 @@ width += (precision + 1); } php_sprintf_appendstring(buffer, pos, size, numbuf, width, 0, padding, - alignment, i, sign, 0); + alignment, i, sign, 0, always_sign); } @@ -412,7 +410,7 @@ php_sprintf_appendstring(buffer, pos, size, &numbuf[i], width, 0, padding, alignment, (NUM_BUF_SIZE - 1) - i, - 0, expprec); + 0, expprec, 0); } @@ -647,7 +645,7 @@ width, precision, padding, alignment, Z_STRLEN_P(var), - 0, expprec); + 0, expprec, 0); if (use_copy) { zval_dtor(&var_copy); } @@ -666,8 +664,7 @@ convert_to_long(tmp); php_sprintf_appenduint(&result, &outpos, &size, Z_LVAL_P(tmp), - width, padding, alignment, - always_sign); + width, padding, alignment); break; case 'e':
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php