diff options
author | ocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-07-19 05:12:52 +0000 |
---|---|---|
committer | ocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-07-19 05:12:52 +0000 |
commit | 9042a601c8a9f09962ebcf27569ed09494f02d4b (patch) | |
tree | ab5434e3cb841624df33e4f2622df9d649b405ed | |
parent | 4826eaecf63398b0806a49248569a80db344c43e (diff) | |
download | ruby-9042a601c8a9f09962ebcf27569ed09494f02d4b.tar.gz |
* ext/tk/tcltklib.c: rbtk_eventloop_depth is used as int.
* ext/tk/tcltklib.c: rbtk_pending_exception is tested with
NIL_P, so should assign Qnil instead of 0 (Qfalse).
* ext/tk/tcltklib.c (ip_invoke_real): fixed memory leak when
ip is deleted.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8797 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | ext/tk/tcltklib.c | 16 |
2 files changed, 18 insertions, 8 deletions
@@ -1,3 +1,13 @@ +Tue Jul 19 14:10:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp> + + * ext/tk/tcltklib.c: rbtk_eventloop_depth is used as int. + + * ext/tk/tcltklib.c: rbtk_pending_exception is tested with + NIL_P, so should assign Qnil instead of 0 (Qfalse). + + * ext/tk/tcltklib.c (ip_invoke_real): fixed memory leak when + ip is deleted. + Tue Jul 19 13:19:46 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp> * ext/tk/lib/tk/variable.rb: For symmetry, add TkVariable#string. It diff --git a/ext/tk/tcltklib.c b/ext/tk/tcltklib.c index cccf924e5b..b088ef7cf7 100644 --- a/ext/tk/tcltklib.c +++ b/ext/tk/tcltklib.c @@ -4,7 +4,7 @@ * Oct. 24, 1997 Y. Matsumoto */ -#define TCLTKLIB_RELEASE_DATE "2005-07-13" +#define TCLTKLIB_RELEASE_DATE "2005-07-19" #include "ruby.h" #include "rubysig.h" @@ -550,7 +550,7 @@ rbtk_release_ip(ptr) /* treat excetiopn on Tcl side */ static VALUE rbtk_pending_exception; -static VALUE rbtk_eventloop_depth = 0; +static int rbtk_eventloop_depth = 0; static int @@ -1110,7 +1110,7 @@ lib_eventloop_core(check_root, update_flag, check_var) if (!NIL_P(rbtk_pending_exception)) { if (rbtk_eventloop_depth == 0) { VALUE exc = rbtk_pending_exception; - rbtk_pending_exception = 0; + rbtk_pending_exception = Qnil; rb_exc_raise(exc); } else { return 0; @@ -1226,7 +1226,7 @@ lib_eventloop_core(check_root, update_flag, check_var) if (!NIL_P(rbtk_pending_exception)) { if (rbtk_eventloop_depth == 0) { VALUE exc = rbtk_pending_exception; - rbtk_pending_exception = 0; + rbtk_pending_exception = Qnil; rb_exc_raise(exc); } else { return 0; @@ -1298,7 +1298,7 @@ lib_eventloop_core(check_root, update_flag, check_var) if (!NIL_P(rbtk_pending_exception)) { if (rbtk_eventloop_depth == 0) { VALUE exc = rbtk_pending_exception; - rbtk_pending_exception = 0; + rbtk_pending_exception = Qnil; rb_exc_raise(exc); } else { return 0; @@ -6846,9 +6846,6 @@ ip_invoke_real(argc, argv, interp) DUMP2("invoke_real called by thread:%lx", rb_thread_current()); - /* allocate memory for arguments */ - av = alloc_invoke_arguments(argc, argv); - /* get the data struct */ ptr = get_ip(interp); @@ -6858,6 +6855,9 @@ ip_invoke_real(argc, argv, interp) return rb_tainted_str_new2(""); } + /* allocate memory for arguments */ + av = alloc_invoke_arguments(argc, argv); + /* Invoke the C procedure */ Tcl_ResetResult(ptr->ip); v = ip_invoke_core(interp, argc, av); |