From e63a9901412d465cd90143d658fda8fa938d7f8c Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 18 Apr 2002 08:46:18 +0000 Subject: * re.c (rb_reg_expr_str): should treat backslash specially in escaping. * io.c: complete off_t handling; missing argument for fptr_finalize(); polished rb_scan_args call. * dir.c: wrap multi-statment macro by do { } while (0) * eval.c, numeric,c, sprintf.c, util.c: ditto. * bignum.c (rb_big_eq): check `y == x' if y is neither Fixnum, Bignum, nor Float. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- string.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'string.c') diff --git a/string.c b/string.c index 72a1783aa8..4eb2bb9966 100644 --- a/string.c +++ b/string.c @@ -58,6 +58,10 @@ str_new(klass, ptr, len) { VALUE str = rb_obj_alloc(klass); + if (len < 0) { + rb_raise(rb_eArgError, "negative string size (or size too big)"); + } + RSTRING(str)->len = len; RSTRING(str)->aux.capa = len; RSTRING(str)->ptr = ALLOC_N(char,len+1); @@ -460,8 +464,8 @@ void rb_str_modify(str) VALUE str; { - if (str_independent(str)) return; - str_make_independent(str); + if (!str_independent(str)) + str_make_independent(str); } VALUE -- cgit v1.2.3