@@ -208,6 +208,8 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...) {
208
208
va_list ap ;
209
209
smart_str buf = {0 };
210
210
int l = strlen (keyword );
211
+ char * dbl_str ;
212
+ int dbl_len ;
211
213
212
214
va_start (ap , format );
213
215
@@ -236,12 +238,13 @@ redis_cmd_format_static(char **ret, char *keyword, char *format, ...) {
236
238
237
239
case 'f' :
238
240
case 'F' : {
239
- char tmp [100 ];
240
241
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 );
243
245
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 );
245
248
}
246
249
break ;
247
250
@@ -277,6 +280,8 @@ redis_cmd_format(char **ret, char *format, ...) {
277
280
smart_str buf = {0 };
278
281
va_list ap ;
279
282
char * p = format ;
283
+ char * dbl_str ;
284
+ int dbl_len ;
280
285
281
286
va_start (ap , format );
282
287
@@ -292,10 +297,13 @@ redis_cmd_format(char **ret, char *format, ...) {
292
297
293
298
case 'F' :
294
299
case 'f' : {
295
- char tmp [100 ];
296
300
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 );
299
307
}
300
308
break ;
301
309
0 commit comments