Commit 23df879a authored by h2so5's avatar h2so5

Fix a problem of 'z' option and shared string

parent aa099f7f
......@@ -489,14 +489,19 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
mrb_value ss;
struct RString *s;
char **ps;
mrb_int len;
ps = va_arg(ap, char**);
if (i < argc) {
ss = to_str(mrb, *sp++);
s = mrb_str_ptr(ss);
if ((mrb_int)strlen(s->ptr) < s->len) {
len = (mrb_int)strlen(s->ptr);
if (len < s->len) {
mrb_raise(mrb, E_ARGUMENT_ERROR, "String contains NUL");
}
else if (len > s->len) {
mrb_str_modify(mrb, s);
}
*ps = s->ptr;
i++;
}
......
......@@ -62,6 +62,7 @@ mrb_str_modify(mrb_state *mrb, struct RString *s)
if (shared->refcnt == 1 && s->ptr == shared->ptr) {
s->ptr = shared->ptr;
s->aux.capa = shared->len;
s->ptr[s->len] = '\0';
mrb_free(mrb, shared);
}
else {
......
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