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.
parent 91c08d76
#ifndef MRB_WITHOUT_FLOAT
#ifdef MRB_DISABLE_STDIO
/* /*
Most code in this file originates from musl (src/stdio/vfprintf.c) 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. ...@@ -36,7 +38,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <mruby.h> #include <mruby.h>
#include <mruby/string.h> #include <mruby/string.h>
#ifndef MRB_WITHOUT_FLOAT
struct fmt_args { struct fmt_args {
mrb_state *mrb; mrb_state *mrb;
mrb_value str; mrb_value str;
...@@ -371,4 +372,17 @@ mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt) ...@@ -371,4 +372,17 @@ mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt)
} }
return f.str; 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 #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment