diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-06-15 09:06:16 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-06-15 09:06:16 +0000 |
| commit | f43369a5c13811c7eb3578c654fe33023dd32a96 (patch) | |
| tree | 18b62091ac44fa262df81bb37ea62e393c27a56d | |
| parent | 3855e60e1686ac6823861608ac0bed9f13a1583b (diff) | |
| download | ruby-f43369a5c13811c7eb3578c654fe33023dd32a96.tar.gz ruby-f43369a5c13811c7eb3578c654fe33023dd32a96.tar.xz ruby-f43369a5c13811c7eb3578c654fe33023dd32a96.zip | |
* gc.c (os_obj_of): invoke garbage collection before iteration, to
avoid accessing half recycled object references. [ruby-dev:38613]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | gc.c | 4 |
2 files changed, 8 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Mon Jun 15 17:48:42 2009 Yukihiro Matsumoto <matz@ruby-lang.org> + + * gc.c (os_obj_of): invoke garbage collection before iteration, to + avoid accessing half recycled object references. [ruby-dev:38613] + Mon Jun 15 11:04:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> * .gdbinit (rp, iseq): load dummy_gdb_enums on demand. @@ -85,6 +85,7 @@ void *alloca (); int ruby_gc_debug_indent = 0; #undef GC_DEBUG +#define GC_DEBUG /* for GC profile */ #define GC_PROFILE_MORE_DETAIL 0 @@ -272,7 +273,7 @@ typedef struct RVALUE { struct RComplex complex; } as; #ifdef GC_DEBUG - char *file; + const char *file; int line; #endif } RVALUE; @@ -2392,6 +2393,7 @@ os_obj_of(rb_objspace_t *objspace, VALUE of) RVALUE *p, *pend; volatile VALUE v; + rb_garbage_collect(); i = 0; while (i < heaps_used) { while (0 < i && (uintptr_t)membase < (uintptr_t)heaps[i-1].membase) |
