diff options
| author | Masaki Muranaka <[email protected]> | 2013-03-12 17:46:57 +0900 |
|---|---|---|
| committer | Masaki Muranaka <[email protected]> | 2013-03-12 17:54:40 +0900 |
| commit | be506de3fccb5b138140135668043d00b3fa3863 (patch) | |
| tree | 35f5f284f47404d2b5ee568695630fa08298ff8e /src/string.c | |
| parent | 46d8c51763bd13b69a4234f0d4be05cbfd8ae401 (diff) | |
| download | mruby-be506de3fccb5b138140135668043d00b3fa3863.tar.gz mruby-be506de3fccb5b138140135668043d00b3fa3863.zip | |
Remove mrb_str_new2(). Use mrb_str_new_cstr() instead.
Make mrb_str_new_cstr() accept NULL pointer. It generates 0byte strings by NULL pointer.
Diffstat (limited to 'src/string.c')
| -rw-r--r-- | src/string.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/string.c b/src/string.c index bcf229388..c0172091e 100644 --- a/src/string.c +++ b/src/string.c @@ -224,17 +224,6 @@ mrb_str_new(mrb_state *mrb, const char *p, int len) return mrb_obj_value(s); } -mrb_value -mrb_str_new2(mrb_state *mrb, const char *ptr) -{ - struct RString *s; - if (!ptr) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "NULL pointer given"); - } - s = str_new(mrb, ptr, strlen(ptr)); - return mrb_obj_value(s); -} - /* * call-seq: (Caution! NULL string) * String.new(str="") => new_str @@ -246,11 +235,23 @@ mrb_value mrb_str_new_cstr(mrb_state *mrb, const char *p) { struct RString *s; - int len = strlen(p); + size_t len; + + if (p) { + len = strlen(p); + if (len > MRB_INT_MAX) { + len = MRB_INT_MAX; + } + } + else { + len = 0; + } s = mrb_obj_alloc_string(mrb); s->ptr = (char *)mrb_malloc(mrb, len+1); - memcpy(s->ptr, p, len); + if (p) { + memcpy(s->ptr, p, len); + } s->ptr[len] = 0; s->len = len; s->aux.capa = len; |
