From 9d923be60446cd599094d12f259b7fee173ec875 Mon Sep 17 00:00:00 2001 From: matz Date: Sat, 2 Oct 2004 03:49:15 +0000 Subject: * string.c (rb_str_sum): check was done with false pointer. [ruby-dev:24383] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6978 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 3 +++ string.c | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5f4e1b6d8d..97871d4f3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ Sat Oct 2 00:42:20 2004 Yukihiro Matsumoto + * string.c (rb_str_sum): check was done with false pointer. + [ruby-dev:24383] + * string.c (rb_str_sum): string may be altered. [ruby-dev:24381] Fri Oct 1 11:40:14 2004 Yukihiro Matsumoto diff --git a/string.c b/string.c index 6f52434181..4d787e49b6 100644 --- a/string.c +++ b/string.c @@ -4405,7 +4405,7 @@ rb_str_sum(argc, argv, str) { VALUE vbits; int bits; - char *p, *pend; + char *ptr, *p, *pend; long len; if (rb_scan_args(argc, argv, "01", &vbits) == 0) { @@ -4413,7 +4413,7 @@ rb_str_sum(argc, argv, str) } else bits = NUM2INT(vbits); - p = RSTRING(str)->ptr; + ptr = p = RSTRING(str)->ptr; len = RSTRING(str)->len; pend = p + len; if (bits > sizeof(long)*CHAR_BIT) { @@ -4424,7 +4424,7 @@ rb_str_sum(argc, argv, str) mod = rb_funcall(mod, '-', 1, INT2FIX(1)); while (p < pend) { - str_mod_check(str, p, len); + str_mod_check(str, ptr, len); res = rb_funcall(res, '+', 1, INT2FIX((unsigned int)*p)); p++; } @@ -4439,7 +4439,7 @@ rb_str_sum(argc, argv, str) mod = -1; } while (p < pend) { - str_mod_check(str, p, len); + str_mod_check(str, ptr, len); res += (unsigned int)*p; p++; } -- cgit v1.2.3