aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--array.c12
-rw-r--r--version.h6
3 files changed, 15 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 9e65879d92..22f3ffd461 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jan 10 00:10:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_replace): use ptr and len of orig instead of
+ shared. fixed: [ruby-dev:30116]
+
Tue Jan 9 12:29:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/etc/etc.c (etc_getpwuid, etc_getgrgid): fix to correctly
diff --git a/array.c b/array.c
index fae5fe016e..7f9925292a 100644
--- a/array.c
+++ b/array.c
@@ -2090,15 +2090,17 @@ rb_ary_replace(VALUE copy, VALUE orig)
VALUE shared;
VALUE *ptr;
- rb_ary_modify(copy);
- ary_iter_check(copy);
orig = to_ary(orig);
+ rb_ary_modify_check(copy);
+ ary_iter_check(copy);
if (copy == orig) return copy;
shared = ary_make_shared(orig);
- ptr = RARRAY(copy)->ptr;
+ if (!ARY_SHARED_P(copy)) {
+ ptr = RARRAY(copy)->ptr;
xfree(ptr);
- RARRAY(copy)->ptr = RARRAY(shared)->ptr;
- RARRAY(copy)->len = RARRAY(shared)->len;
+ }
+ RARRAY(copy)->ptr = RARRAY(orig)->ptr;
+ RARRAY(copy)->len = RARRAY(orig)->len;
RARRAY(copy)->aux.shared = shared;
FL_SET(copy, ELTS_SHARED);
diff --git a/version.h b/version.h
index 4e14e48d97..036758f25d 100644
--- a/version.h
+++ b/version.h
@@ -1,7 +1,7 @@
#define RUBY_VERSION "1.9.0"
-#define RUBY_RELEASE_DATE "2007-01-09"
+#define RUBY_RELEASE_DATE "2007-01-10"
#define RUBY_VERSION_CODE 190
-#define RUBY_RELEASE_CODE 20070109
+#define RUBY_RELEASE_CODE 20070110
#define RUBY_PATCHLEVEL 0
#define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 0
#define RUBY_RELEASE_YEAR 2007
#define RUBY_RELEASE_MONTH 1
-#define RUBY_RELEASE_DAY 9
+#define RUBY_RELEASE_DAY 10
RUBY_EXTERN const char ruby_version[];
RUBY_EXTERN const char ruby_release_date[];