Simply use snprintf instead of custom fmt_fp,

Unless `MRB_DISABLE_STDIO` is set. `snprintf` is used anyway
if mruby is configured to use `stdio`. This change reduces 8KB
of program size on the Linux box.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2018-08-01 16:50:44 +09:00
parent 91c08d7631
commit 6681e22c71
+15 -1
View File
@@ -1,3 +1,5 @@
#ifndef MRB_WITHOUT_FLOAT
#ifdef MRB_DISABLE_STDIO
/*
Most code in this file originates from musl (src/stdio/vfprintf.c)
@@ -36,7 +38,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <mruby.h>
#include <mruby/string.h>
#ifndef MRB_WITHOUT_FLOAT
struct fmt_args {
mrb_state *mrb;
mrb_value str;
@@ -371,4 +372,17 @@ mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt)
}
return f.str;
}
#else /* MRB_DISABLE_STDIO */
#include <mruby.h>
#include <stdio.h>
mrb_value
mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt)
{
char buf[24];
snprintf(buf, sizeof(buf), fmt, mrb_float(flo));
return mrb_str_new_cstr(mrb, buf);
}
#endif /* MRB_DISABLE_STDIO */
#endif