summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/parse.y2
-rw-r--r--src/string.c23
2 files changed, 7 insertions, 18 deletions
diff --git a/src/parse.y b/src/parse.y
index c4b83bbab..fe1bd805f 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -882,7 +882,7 @@ heredoc_start_sym(parser_state *p, node *beg, mrb_sym sym, enum heredoc_type typ
{
char *bs = (char*)beg->cdr->car;
int allow_indent = (bs[2] == '-');
- int len;
+ size_t len;
const char *s = mrb_sym2name_len(p->mrb, sym, &len);
return heredoc_start_sb(p, s, len, type, allow_indent);
}
diff --git a/src/string.c b/src/string.c
index 89bcf0ca6..cd70e63f6 100644
--- a/src/string.c
+++ b/src/string.c
@@ -167,7 +167,7 @@ mrb_str_buf_new(mrb_state *mrb, int capa)
}
static void
-str_buf_cat(mrb_state *mrb, struct RString *s, const char *ptr, mrb_int len)
+str_buf_cat(mrb_state *mrb, struct RString *s, const char *ptr, size_t len)
{
mrb_int capa;
mrb_int total;
@@ -202,7 +202,7 @@ str_buf_cat(mrb_state *mrb, struct RString *s, const char *ptr, mrb_int len)
}
mrb_value
-mrb_str_buf_cat(mrb_state *mrb, mrb_value str, const char *ptr, mrb_int len)
+mrb_str_buf_cat(mrb_state *mrb, mrb_value str, const char *ptr, size_t len)
{
if (len == 0) return str;
str_buf_cat(mrb, mrb_str_ptr(str), ptr, len);
@@ -210,14 +210,10 @@ mrb_str_buf_cat(mrb_state *mrb, mrb_value str, const char *ptr, mrb_int len)
}
mrb_value
-mrb_str_new(mrb_state *mrb, const char *p, mrb_int len)
+mrb_str_new(mrb_state *mrb, const char *p, size_t len)
{
struct RString *s;
- if (len < 0) {
- len = 0;
- }
-
s = str_new(mrb, p, len);
return mrb_obj_value(s);
}
@@ -237,8 +233,8 @@ mrb_str_new_cstr(mrb_state *mrb, const char *p)
if (p) {
len = strlen(p);
- if (len > MRB_INT_MAX) {
- len = MRB_INT_MAX;
+ if ((mrb_int)len < 0) {
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "argument too big");
}
}
else {
@@ -2550,14 +2546,7 @@ mrb_str_cat(mrb_state *mrb, mrb_value str, const char *ptr, mrb_int len)
mrb_value
mrb_str_cat2(mrb_state *mrb, mrb_value str, const char *ptr)
{
- size_t len;
-
- len = strlen(ptr);
- if (len > MRB_INT_MAX) {
- len = MRB_INT_MAX;
- }
-
- return mrb_str_cat(mrb, str, ptr, len);
+ return mrb_str_cat(mrb, str, ptr, strlen(ptr));
}
mrb_value