summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-11-05 06:05:14 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-11-05 06:05:14 +0000
commita707ab4bc8a29241440f56696098efa2f7f3ff45 (patch)
tree585d88e01e027ee56f1ac6a4c3851ab79c25fc5c /string.c
parent7fecd1e75d80131c36d6615c38a6b869dfa81054 (diff)
string.c: no terminator
* string.c (rb_str_{,l,r}strip_bang): rb_str_subseq() will not NUL-terminate the result string, in the future, so it will not be needed in other cases. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/string.c b/string.c
index e8cc8e37d8..5c87424d18 100644
--- a/string.c
+++ b/string.c
@@ -128,7 +128,10 @@ VALUE rb_cSymbol;
#define STR_ENC_GET(str) get_encoding(str)
-#if 1
+#if !defined SHARABLE_MIDDLE_SUBSTRING
+# define SHARABLE_MIDDLE_SUBSTRING 0
+#endif
+#if !SHARABLE_MIDDLE_SUBSTRING
#define SHARABLE_SUBSTRING_P(beg, len, end) ((beg) + (len) == (end))
#else
#define SHARABLE_SUBSTRING_P(beg, len, end) 1
@@ -7227,7 +7230,9 @@ rb_str_lstrip_bang(VALUE str)
s = start + loffset;
memmove(start, s, len);
STR_SET_LEN(str, len);
+#if !SHARABLE_MIDDLE_SUBSTRING
TERM_FILL(start+len, rb_enc_mbminlen(enc));
+#endif
return str;
}
return Qnil;
@@ -7309,7 +7314,9 @@ rb_str_rstrip_bang(VALUE str)
long len = olen - roffset;
STR_SET_LEN(str, len);
+#if !SHARABLE_MIDDLE_SUBSTRING
TERM_FILL(start+len, rb_enc_mbminlen(enc));
+#endif
return str;
}
return Qnil;
@@ -7371,7 +7378,9 @@ rb_str_strip_bang(VALUE str)
memmove(start, start + loffset, len);
}
STR_SET_LEN(str, len);
+#if !SHARABLE_MIDDLE_SUBSTRING
TERM_FILL(start+len, rb_enc_mbminlen(enc));
+#endif
return str;
}
return Qnil;