Merge pull request #878 from monaka/pr-reduce-sprintf

Reduce sprintf() calls. Remove mrb_int_to_str() and MRB_INT_FORMAT.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2013-02-23 21:31:39 -08:00
3 changed files with 28 additions and 13 deletions
+22 -6
View File
@@ -14,6 +14,7 @@
#include "mruby/range.h"
#include "mruby/array.h"
#include "mruby/class.h"
#include "mruby/numeric.h"
#include <stdio.h>
#include "re.h"
@@ -2540,9 +2541,16 @@ mrb_str_dump(mrb_state *mrb, mrb_value str)
*q++ = c;
}
else {
*q++ = '\\';
sprintf(q, "%03o", c&0xff);
q += 3;
mrb_value octstr;
mrb_value chr;
const char *ptr;
int len;
chr = mrb_fixnum_value(c & 0xff);
octstr = mrb_fix2str(mrb, chr, 8);
ptr = mrb_str_body(octstr, &len);
memcpy(q, "\\000", 4);
memcpy(q + 4 - len, ptr, len);
q += 4;
}
}
*q++ = '"';
@@ -2625,9 +2633,17 @@ mrb_str_inspect(mrb_state *mrb, mrb_value str)
continue;
}
else {
int n = sprintf(buf, "\\%03o", c & 0377);
mrb_str_buf_cat(mrb, result, buf, n);
continue;
mrb_value octstr;
mrb_value chr;
const char *ptr;
int len;
chr = mrb_fixnum_value(c & 0xff);
octstr = mrb_fix2str(mrb, chr, 8);
ptr = mrb_str_body(octstr, &len);
memcpy(buf, "\\000", 4);
memcpy(buf + 4 - len, ptr, len);
mrb_str_buf_cat(mrb, result, buf, 4);
continue;
}
}
mrb_str_buf_cat(mrb, result, "\"", 1);