[ruby-dev:24350] Re: Marshal.dump dumps core

From: nobu@...
Date: 2004-09-27 01:24:12 UTC
List: ruby-dev #24350
なかだです。

At Sat, 25 Sep 2004 02:26:49 +0900,
Tanaka Akira wrote in [ruby-dev:24335]:
> > 私のところでは起きません。ということは、[ruby-dev:24311]と同
> > 根なのかしら。コミットしてみますね。
> 
> いえ、状況はかわりません。
> ただ、boron で試すと、たしかに core を吐きませんね。
> 
> ... ゴミをひとけた増やすと boron でも落ちるようになりました。

単にエラーにするだけでOK?


Index: marshal.c
===================================================================
RCS file: /cvs/ruby/src/ruby/marshal.c,v
retrieving revision 1.115
diff -u -2 -p -r1.115 marshal.c
--- marshal.c	17 Aug 2004 09:02:40 -0000	1.115
+++ marshal.c	27 Sep 2004 01:21:38 -0000
@@ -357,11 +357,15 @@ static void w_object _((VALUE,struct dum
 
 static int
-hash_each(key, value, arg)
+hash_each(key, value, arg, err)
     VALUE key, value;
     struct dump_call_arg *arg;
+    int err;
 {
+    if (err) {
+	rb_raise(rb_eRuntimeError, "hash modified during marshal dump");
+    }
     w_object(key, arg->arg, arg->limit);
     w_object(value, arg->arg, arg->limit);
-    return ST_CONTINUE;
+    return ST_CHECK;
 }
 


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next