summaryrefslogtreecommitdiffhomepage
path: root/src/string.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/string.c')
-rw-r--r--src/string.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/string.c b/src/string.c
index 6424626d2..aa1afec47 100644
--- a/src/string.c
+++ b/src/string.c
@@ -216,6 +216,9 @@ mrb_value
mrb_str_new(mrb_state *mrb, const char *p, size_t len)
{
struct RString *s;
+ if ((mrb_int)len < 0) {
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "negative string size (or size too big)");
+ }
s = str_new(mrb, p, len);
return mrb_obj_value(s);
@@ -253,6 +256,9 @@ mrb_value
mrb_str_new_static(mrb_state *mrb, const char *p, size_t len)
{
struct RString *s;
+ if ((mrb_int)len < 0) {
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "negative string size (or size too big)");
+ }
s = mrb_obj_alloc_string(mrb);
s->len = len;
@@ -2361,7 +2367,7 @@ mrb_str_dump(mrb_state *mrb, mrb_value str)
}
}
}
- *q++ = '"';
+ *q = '"';
return mrb_obj_value(result);
}