summaryrefslogtreecommitdiffhomepage
path: root/src/string.c
diff options
context:
space:
mode:
authorMasaki Muranaka <[email protected]>2013-03-12 17:46:57 +0900
committerMasaki Muranaka <[email protected]>2013-03-12 17:54:40 +0900
commitbe506de3fccb5b138140135668043d00b3fa3863 (patch)
tree35f5f284f47404d2b5ee568695630fa08298ff8e /src/string.c
parent46d8c51763bd13b69a4234f0d4be05cbfd8ae401 (diff)
downloadmruby-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.c27
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;