summaryrefslogtreecommitdiffhomepage
path: root/src/string.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/string.c')
-rw-r--r--src/string.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/src/string.c b/src/string.c
index 1e3c7db3a..9c66ae18f 100644
--- a/src/string.c
+++ b/src/string.c
@@ -32,11 +32,11 @@
}\
} while (0)
#define RSTRING_EMBED_LEN(s) \
- (size_t)((RSTRING(s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
+ (mrb_int)((RSTRING(s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
#define STR_EMBED_LEN(s)\
- (size_t)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
+ (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
#define STR_PTR(s) ((STR_EMBED_P(s)) ? (s)->as.ary : (s)->as.heap.ptr)
-#define STR_LEN(s) ((STR_EMBED_P(s)) ? STR_EMBED_LEN(s) : (size_t)(s)->as.heap.len)
+#define STR_LEN(s) ((STR_EMBED_P(s)) ? STR_EMBED_LEN(s) : (s)->as.heap.len)
const char mrb_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz";
@@ -272,7 +272,7 @@ str_buf_cat(mrb_state *mrb, struct RString *s, const char *ptr, size_t len)
ptr = STR_PTR(s) + off;
}
memcpy(STR_PTR(s) + STR_LEN(s), ptr, len);
- mrb_assert(total <= MRB_INT_MAX);
+ mrb_assert_int_fit(size_t, total, mrb_int, MRB_INT_MAX);
STR_SET_LEN(s, total);
STR_PTR(s)[total] = '\0'; /* sentinel */
}
@@ -1351,8 +1351,7 @@ static mrb_value
mrb_str_index_m(mrb_state *mrb, mrb_value str)
{
mrb_value *argv;
- int argc;
-
+ mrb_int argc;
mrb_value sub;
mrb_int pos;
@@ -1695,7 +1694,7 @@ static mrb_value
mrb_str_rindex_m(mrb_state *mrb, mrb_value str)
{
mrb_value *argv;
- int argc;
+ mrb_int argc;
mrb_value sub;
mrb_value vpos;
mrb_int pos, len = RSTRING_LEN(str);
@@ -2104,7 +2103,7 @@ mrb_string_value_cstr(mrb_state *mrb, mrb_value *ptr)
}
mrb_value
-mrb_str_to_inum(mrb_state *mrb, mrb_value str, int base, mrb_bool badcheck)
+mrb_str_to_inum(mrb_state *mrb, mrb_value str, mrb_int base, mrb_bool badcheck)
{
char *s;
mrb_int len;
@@ -2150,16 +2149,9 @@ mrb_str_to_inum(mrb_state *mrb, mrb_value str, int base, mrb_bool badcheck)
static mrb_value
mrb_str_to_i(mrb_state *mrb, mrb_value self)
{
- mrb_value *argv;
- int argc;
- int base;
-
- mrb_get_args(mrb, "*", &argv, &argc);
- if (argc == 0)
- base = 10;
- else
- base = mrb_fixnum(argv[0]);
+ mrb_int base = 10;
+ mrb_get_args(mrb, "|i", &base);
if (base < 0) {
mrb_raisef(mrb, E_ARGUMENT_ERROR, "illegal radix %S", mrb_fixnum_value(base));
}