Skip to content

Commit 95312e9

Browse files
author
Ilia Alshanetsky
committed
Fixed bug php#4232. (Added support for %e and %E to printf/sprintf)
1 parent 1a08e5b commit 95312e9

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

ext/standard/formatted_print.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,31 @@ php_sprintf_appenddouble(char **buffer, int *pos,
333333
if (precision > 0)
334334
numbuf[i++] = decimal_point;
335335
}
336+
} else if (fmt == 'e' || fmt == 'E') {
337+
char *exp_p;
338+
int dec2;
339+
340+
decpt--;
341+
342+
numbuf[i++] = cvt[j++];
343+
numbuf[i++] = decimal_point;
344+
345+
if (precision > 0) {
346+
int k = precision;
347+
348+
while (k-- && cvt[j]) {
349+
numbuf[i++] = cvt[j++];
350+
}
351+
} else {
352+
numbuf[i++] = '0';
353+
}
354+
355+
numbuf[i++] = fmt;
356+
exp_p = php_convert_to_decimal(decpt, 0, &dec2, &sign, 0);
357+
numbuf[i++] = sign ? '-' : '+';
358+
while (*exp_p) {
359+
numbuf[i++] = *(exp_p++);
360+
}
336361
} else {
337362
numbuf[i++] = cvt[j++];
338363
if (precision > 0)

0 commit comments

Comments
 (0)