Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1d6133d

Browse files
committed
Fixes regression on doubles (Github issue phpredis#33).
1 parent f4030ea commit 1d6133d

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

library.c

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...) {
208208
va_list ap;
209209
smart_str buf = {0};
210210
int l = strlen(keyword);
211+
char *dbl_str;
212+
int dbl_len;
211213

212214
va_start(ap, format);
213215

@@ -236,12 +238,13 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...) {
236238

237239
case 'f':
238240
case 'F': {
239-
char tmp[100];
240241
double d = va_arg(ap, double);
241-
int tmp_len = snprintf(tmp, sizeof(tmp), "%.8f", d);
242-
smart_str_append_long(&buf, tmp_len);
242+
dbl_str = _php_math_number_format(d, 8, '.', '\x00');
243+
dbl_len = strlen(dbl_str);
244+
smart_str_append_long(&buf, dbl_len);
243245
smart_str_appendl(&buf, _NL, sizeof(_NL) - 1);
244-
smart_str_appendl(&buf, tmp, tmp_len);
246+
smart_str_appendl(&buf, dbl_str, dbl_len);
247+
efree(dbl_str);
245248
}
246249
break;
247250

@@ -277,6 +280,8 @@ redis_cmd_format(char **ret, char *format, ...) {
277280
smart_str buf = {0};
278281
va_list ap;
279282
char *p = format;
283+
char *dbl_str;
284+
int dbl_len;
280285

281286
va_start(ap, format);
282287

@@ -292,10 +297,13 @@ redis_cmd_format(char **ret, char *format, ...) {
292297

293298
case 'F':
294299
case 'f': {
295-
char tmp[100];
296300
double d = va_arg(ap, double);
297-
int tmp_len = snprintf(tmp, sizeof(tmp), "%.8f", d);
298-
smart_str_appendl(&buf, tmp, tmp_len);
301+
dbl_str = _php_math_number_format(d, 8, '.', '\x00');
302+
dbl_len = strlen(dbl_str);
303+
smart_str_append_long(&buf, dbl_len);
304+
smart_str_appendl(&buf, _NL, sizeof(_NL) - 1);
305+
smart_str_appendl(&buf, dbl_str, dbl_len);
306+
efree(dbl_str);
299307
}
300308
break;
301309

0 commit comments

Comments
 (0)