File tree Expand file tree Collapse file tree 3 files changed +22
-5
lines changed Expand file tree Collapse file tree 3 files changed +22
-5
lines changed Original file line number Diff line number Diff line change
1
+ Fri Mar 27 19:12:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
2
+
3
+ * gc.c (run_final): frees zombies only. [ruby-dev:38171]
4
+
5
+ Fri Mar 27 19:12:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
6
+
7
+ * gc.c (rb_gc_call_finalizer_at_exit): leave Thread objects
8
+ unfinalized. [ruby-dev:38168]
9
+
10
+ Fri Mar 27 19:12:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
11
+
12
+ * gc.c (run_final): calls free function. [ruby-core:22578]
13
+
1
14
Mon Mar 23 19:00:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
2
15
3
16
* ext/thread/thread.c (rb_queue_pop, rb_queue_push): should not lock
Original file line number Diff line number Diff line change @@ -1898,6 +1898,9 @@ run_final(obj)
1898
1898
1899
1899
objid = rb_obj_id (obj ); /* make obj into id */
1900
1900
rb_thread_critical = Qtrue ;
1901
+ if (BUILTIN_TYPE (obj ) == T_DEFERRED && RDATA (obj )-> dfree ) {
1902
+ (* RDATA (obj )-> dfree )(DATA_PTR (obj ));
1903
+ }
1901
1904
args [1 ] = 0 ;
1902
1905
args [2 ] = (VALUE )ruby_safe_level ;
1903
1906
for (i = 0 ; i < RARRAY (finalizers )-> len ; i ++ ) {
@@ -1966,7 +1969,8 @@ rb_gc_call_finalizer_at_exit()
1966
1969
p = heaps [i ].slot ; pend = p + heaps [i ].limit ;
1967
1970
while (p < pend ) {
1968
1971
if (BUILTIN_TYPE (p ) == T_DATA &&
1969
- DATA_PTR (p ) && RANY (p )-> as .data .dfree ) {
1972
+ DATA_PTR (p ) && RANY (p )-> as .data .dfree &&
1973
+ RANY (p )-> as .basic .klass != rb_cThread ) {
1970
1974
p -> as .free .flags = 0 ;
1971
1975
if ((long )RANY (p )-> as .data .dfree == -1 ) {
1972
1976
RUBY_CRITICAL (free (DATA_PTR (p )));
Original file line number Diff line number Diff line change 1
1
#define RUBY_VERSION "1.8.6"
2
- #define RUBY_RELEASE_DATE "2009-03-23 "
2
+ #define RUBY_RELEASE_DATE "2009-03-27 "
3
3
#define RUBY_VERSION_CODE 186
4
- #define RUBY_RELEASE_CODE 20090323
5
- #define RUBY_PATCHLEVEL 365
4
+ #define RUBY_RELEASE_CODE 20090327
5
+ #define RUBY_PATCHLEVEL 366
6
6
7
7
#define RUBY_VERSION_MAJOR 1
8
8
#define RUBY_VERSION_MINOR 8
9
9
#define RUBY_VERSION_TEENY 6
10
10
#define RUBY_RELEASE_YEAR 2009
11
11
#define RUBY_RELEASE_MONTH 3
12
- #define RUBY_RELEASE_DAY 23
12
+ #define RUBY_RELEASE_DAY 27
13
13
14
14
#ifdef RUBY_EXTERN
15
15
RUBY_EXTERN const char ruby_version [];
You can’t perform that action at this time.
0 commit comments