From: Yukihiro Matsumoto Date: 2004-09-15T18:37:28+09:00 Subject: Re: [PATCH] dir.c --- Dir.chdir error handling Hi, In message "Re: [PATCH] dir.c --- Dir.chdir error handling" on Wed, 15 Sep 2004 18:26:05 +0900, ts writes: | Now if ruby crash, rewrite mark_locations_array() like this | | ------------------------------------------------------------ | static void | mark_locations_array(x, n) | register VALUE *x; | register long n; | { | VALUE tmp; | | while (n--) { | if (is_pointer_to_heap((void *)*x)) { | tmp = *x; | rb_gc_mark(tmp); | } | x++; | } | } | ------------------------------------------------------------ | | and you'll see that ruby work (normally) | | If you look at the patch to correct this problem, written by matz, you'll | see that it has nothing to do with `volatile' Interesting. I'm happy to see the bug fixed. But I'm not sure what was the problem, and how this "fix" changed the situation. Can you (or anybody) explain for me? matz.