diff options
| author | Yukihiro Matz Matsumoto <[email protected]> | 2013-03-14 19:33:38 +0900 |
|---|---|---|
| committer | Yukihiro Matz Matsumoto <[email protected]> | 2013-03-14 19:33:38 +0900 |
| commit | 9d0bbdb7f8b54631d639d3ed3038b6546ee4558d (patch) | |
| tree | 1691225bfb97439d7f73ac727b5aa0615085fce7 | |
| parent | 93e9174c57709e6867459c55fb88149234483c1d (diff) | |
| download | mruby-9d0bbdb7f8b54631d639d3ed3038b6546ee4558d.tar.gz mruby-9d0bbdb7f8b54631d639d3ed3038b6546ee4558d.zip | |
use size_t for string length C API
| -rw-r--r-- | include/mruby.h | 2 | ||||
| -rw-r--r-- | include/mruby/string.h | 4 | ||||
| -rw-r--r-- | mrbgems/mruby-struct/src/struct.c | 7 | ||||
| -rw-r--r-- | src/parse.y | 2 | ||||
| -rw-r--r-- | src/string.c | 23 |
5 files changed, 14 insertions, 24 deletions
diff --git a/include/mruby.h b/include/mruby.h index 6d7be7616..018a6a678 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -202,7 +202,7 @@ void *mrb_realloc(mrb_state*, void*, size_t); struct RBasic *mrb_obj_alloc(mrb_state*, enum mrb_vtype, struct RClass*); void *mrb_free(mrb_state*, void*); -mrb_value mrb_str_new(mrb_state *mrb, const char *p, int len); /* mrb_str_new */ +mrb_value mrb_str_new(mrb_state *mrb, const char *p, size_t len); mrb_value mrb_str_new_cstr(mrb_state*, const char*); mrb_state* mrb_open(void); diff --git a/include/mruby/string.h b/include/mruby/string.h index 2fc748474..613c6c6a7 100644 --- a/include/mruby/string.h +++ b/include/mruby/string.h @@ -46,10 +46,10 @@ mrb_value mrb_str_plus(mrb_state*, mrb_value, mrb_value); mrb_value mrb_obj_as_string(mrb_state *mrb, mrb_value obj); mrb_value mrb_str_resize(mrb_state *mrb, mrb_value str, int len); /* mrb_str_resize */ mrb_value mrb_string_value(mrb_state *mrb, mrb_value *ptr); /* StringValue */ -mrb_value mrb_str_substr(mrb_state *mrb, mrb_value str, mrb_int beg, int len); +mrb_value mrb_str_substr(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len); mrb_value mrb_check_string_type(mrb_state *mrb, mrb_value str); mrb_value mrb_str_buf_new(mrb_state *mrb, int capa); -mrb_value mrb_str_buf_cat(mrb_state *mrb, mrb_value str, const char *ptr, int len); +mrb_value mrb_str_buf_cat(mrb_state *mrb, mrb_value str, const char *ptr, size_t len); char *mrb_string_value_cstr(mrb_state *mrb, mrb_value *ptr); char *mrb_string_value_ptr(mrb_state *mrb, mrb_value ptr); diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c index 884d4cdc6..5446c6fe7 100644 --- a/mrbgems/mruby-struct/src/struct.c +++ b/mrbgems/mruby-struct/src/struct.c @@ -166,7 +166,7 @@ mrb_id_attrset(mrb_state *mrb, mrb_sym id) { const char *name; char *buf; - int len; + size_t len; mrb_sym mid; name = mrb_sym2name_len(mrb, id, &len); @@ -184,7 +184,8 @@ static mrb_value mrb_struct_set(mrb_state *mrb, mrb_value obj, mrb_value val) { const char *name; - int i, len; + int i; + size_t len; mrb_sym mid; mrb_value members, slot, *ptr, *ptr_members; @@ -471,7 +472,7 @@ inspect_struct(mrb_state *mrb, mrb_value s, int recur) id = mrb_symbol(slot); if (mrb_is_local_id(id) || mrb_is_const_id(id)) { const char *name; - int len; + size_t len; name = mrb_sym2name_len(mrb, id, &len); mrb_str_append(mrb, str, mrb_str_new(mrb, name, len)); 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 |
