Skip to content

Commit

Permalink
* NEWS: entry for ruby_vm_at_exit().
Browse files Browse the repository at this point in the history
* eval.c (ruby_cleanup): bug fix around at_exit (1) timing was
  wrong. (2) execution order was opposite.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
shyouhei committed Dec 2, 2010
1 parent 2f1a781 commit 7911d42
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 7 deletions.
7 changes: 7 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
Thu Dec 2 23:52:26 2010 URABE Shyouhei <[email protected]>

* NEWS: entry for ruby_vm_at_exit().

* eval.c (ruby_cleanup): bug fix around at_exit (1) timing was
wrong. (2) execution order was opposite.

Thu Dec 2 23:05:14 2010 NAKAMURA Usaku <[email protected]>

* win32/Makefile.sub (RCFLAGS): -nologo switch is only available in
Expand Down
3 changes: 3 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ with all sufficient information, see the ChangeLog file.
* rb_scan_args() is enhanced with support for option hash argument
extraction.

* ruby_vm_at_exit() added. This enables extension libs to hool a VM
termination.

=== Library updates (outstanding ones only)

* builtin classes
Expand Down
14 changes: 7 additions & 7 deletions eval.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,13 +151,6 @@ ruby_cleanup(volatile int ex)
}
POP_TAG();

/* at_exit functions called here; any other place more apropriate
* for this purpose? let me know if any. */
for (i=0; i<RARRAY_LEN(ary); i++) {
((void(*)(rb_vm_t*))RARRAY_PTR(ary)[i])(vm);
}
rb_ary_clear(ary);

errs[0] = th->errinfo;
PUSH_TAG();
if ((state = EXEC_TAG()) == 0) {
Expand All @@ -172,6 +165,13 @@ ruby_cleanup(volatile int ex)
POP_TAG();
rb_thread_stop_timer_thread();

/* at_exit functions called here; any other place more apropriate
* for this purpose? let me know if any. */
for (i=RARRAY_LEN(ary) - 1; i>=0; i--) {
((void(*)(rb_vm_t*))RARRAY_PTR(ary)[i])(vm);
}
rb_ary_clear(ary);

#if EXIT_SUCCESS != 0 || EXIT_FAILURE != 1
switch (ex) {
#if EXIT_SUCCESS != 0
Expand Down

0 comments on commit 7911d42

Please sign in to comment.