summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--vm.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index b98784509a..5168aa58dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Wed Jun 19 06:29:31 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (kwmerge_i): add WB.
+
Wed Jun 19 06:26:49 2013 Koichi Sasada <ko1@atdot.net>
* hash.c: `st_update()' also has same issue of last fix.
diff --git a/vm.c b/vm.c
index 69b41639f0..fe5f0806be 100644
--- a/vm.c
+++ b/vm.c
@@ -2174,7 +2174,9 @@ static int
kwmerge_i(VALUE key, VALUE value, VALUE hash)
{
if (!SYMBOL_P(key)) Check_Type(key, T_SYMBOL);
- st_update(RHASH_TBL(hash), key, kwmerge_ii, (st_data_t)value);
+ if (st_update(RHASH_TBL(hash), key, kwmerge_ii, (st_data_t)value) == 0) { /* !existing */
+ OBJ_WRITTEN(hash, Qundef, value);
+ }
return ST_CONTINUE;
}