sniper Tue Jan 20 23:00:49 2004 EDT
Modified files: (Branch: PHP_4_3)
/php-src NEWS
/php-src/ext/standard formatted_print.c
Log:
MFH: - Fixed bug #26973 (*printf() + modifier broken)
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1247.2.536&r2=1.1247.2.537&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1247.2.536 php-src/NEWS:1.1247.2.537
--- php-src/NEWS:1.1247.2.536 Tue Jan 20 21:33:21 2004
+++ php-src/NEWS Tue Jan 20 23:00:46 2004
@@ -3,6 +3,7 @@
?? Jan 2004, Version 4.3.5
- Fixed bug #26974 (rename() doesn't check the destination file against
safe_mode/open_basedir). (Ilia)
+- Fixed bug #26973 (*printf() '+' modifier broken). (Jani)
- Fixed bug #26969 (--with-openssl=shared build fails). (Jani)
- Fixed bug #26949 (rand(min,max) always returns min when ZTS enabled). (Jani)
- Fixed bug #26937 (Warning in xml.c). (Jani)
http://cvs.php.net/diff.php/php-src/ext/standard/formatted_print.c?r1=1.59.2.6&r2=1.59.2.7&ty=u
Index: php-src/ext/standard/formatted_print.c
diff -u php-src/ext/standard/formatted_print.c:1.59.2.6
php-src/ext/standard/formatted_print.c:1.59.2.7
--- php-src/ext/standard/formatted_print.c:1.59.2.6 Tue Jan 13 18:31:45 2004
+++ php-src/ext/standard/formatted_print.c Tue Jan 20 23:00:47 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: formatted_print.c,v 1.59.2.6 2004/01/13 23:31:45 iliaa Exp $ */
+/* $Id: formatted_print.c,v 1.59.2.7 2004/01/21 04:00:47 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);
}
@@ -626,7 +624,7 @@
width, precision, padding,
alignment,
Z_STRLEN_P(tmp),
-
0, expprec);
+
0, expprec, 0);
break;
case 'd':
@@ -641,8 +639,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