summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/tk/lib/multi-tk.rb1
-rw-r--r--ext/tk/lib/tk.rb2
-rw-r--r--ext/tk/stubs.c19
-rw-r--r--ext/tk/tcltklib.c22
4 files changed, 32 insertions, 12 deletions
diff --git a/ext/tk/lib/multi-tk.rb b/ext/tk/lib/multi-tk.rb
index 84c2322d56..8fc99dff73 100644
--- a/ext/tk/lib/multi-tk.rb
+++ b/ext/tk/lib/multi-tk.rb
@@ -944,6 +944,7 @@ class MultiTkIp
dup_keys['fill'] = :both unless dup_keys.key?('fill')
dup_keys['expand'] = true unless dup_keys.key?('expand')
c = TkFrame.new(top, :container=>true).pack(dup_keys)
+ c.bind('Destroy', proc{top.destroy})
# return keys
loadTk_keys['use'] = TkWinfo.id(c)
diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb
index bf053058da..45468a3bfd 100644
--- a/ext/tk/lib/tk.rb
+++ b/ext/tk/lib/tk.rb
@@ -4559,7 +4559,7 @@ end
#Tk.freeze
module Tk
- RELEASE_DATE = '2006-04-06'.freeze
+ RELEASE_DATE = '2006-04-18'.freeze
autoload :AUTO_PATH, 'tk/variable'
autoload :TCL_PACKAGE_PATH, 'tk/variable'
diff --git a/ext/tk/stubs.c b/ext/tk/stubs.c
index cf362f4e12..23ff42a4f4 100644
--- a/ext/tk/stubs.c
+++ b/ext/tk/stubs.c
@@ -141,7 +141,8 @@ ruby_open_tk_dll()
char tk_name[20];
if (!tcl_dll) {
- int ret = ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr);
+ /* int ret = ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); */
+ int ret = ruby_open_tcl_dll(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0);
if (ret != TCLTK_STUBS_OK) return ret;
}
@@ -212,7 +213,9 @@ ruby_tcl_create_ip_and_stubs_init(st)
Tcl_Interp *(*p_Tcl_DeleteInterp)();
if (!tcl_dll) {
- int ret = ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr);
+ /* int ret = ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); */
+ int ret = ruby_open_tcl_dll(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0);
+
if (ret != TCLTK_STUBS_OK) {
if (st) *st = ret;
return (Tcl_Interp*)NULL;
@@ -345,7 +348,8 @@ ruby_tcltk_stubs()
int st;
Tcl_Interp *tcl_ip;
- st = ruby_open_tcltk_dll(RSTRING(rb_argv0)->ptr);
+ /* st = ruby_open_tcltk_dll(RSTRING(rb_argv0)->ptr); */
+ st = ruby_open_tcltk_dll(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0);
switch(st) {
case NO_FindExecutable:
return -7;
@@ -407,7 +411,8 @@ ruby_open_tcl_dll(appname)
int ruby_open_tk_dll()
{
if (!open_tcl_dll) {
- ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr);
+ /* ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); */
+ ruby_open_tcl_dll(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0);
}
return TCLTK_STUBS_OK;
@@ -438,7 +443,8 @@ ruby_tcl_create_ip_and_stubs_init(st)
Tcl_Interp *tcl_ip;
if (!open_tcl_dll) {
- ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr);
+ /* ruby_open_tcl_dll(RSTRING(rb_argv0)->ptr); */
+ ruby_open_tcl_dll(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0);
}
if (st) *st = 0;
@@ -502,7 +508,8 @@ ruby_tk_stubs_safeinit(tcl_ip)
int
ruby_tcltk_stubs()
{
- Tcl_FindExecutable(RSTRING(rb_argv0)->ptr);
+ /* Tcl_FindExecutable(RSTRING(rb_argv0)->ptr); */
+ Tcl_FindExecutable(rb_argv0 ? RSTRING(rb_argv0)->ptr : 0);
return 0;
}
diff --git a/ext/tk/tcltklib.c b/ext/tk/tcltklib.c
index ecb73e6743..ebc2ac5d76 100644
--- a/ext/tk/tcltklib.c
+++ b/ext/tk/tcltklib.c
@@ -4,7 +4,7 @@
* Oct. 24, 1997 Y. Matsumoto
*/
-#define TCLTKLIB_RELEASE_DATE "2006-04-06"
+#define TCLTKLIB_RELEASE_DATE "2006-04-18"
#include "ruby.h"
#include "rubysig.h"
@@ -5118,7 +5118,10 @@ ip_make_safe_core(interp, argc, argv)
}
if (Tcl_MakeSafe(ptr->ip) == TCL_ERROR) {
- return rb_exc_new2(rb_eRuntimeError, Tcl_GetStringResult(ptr->ip));
+ /* return rb_exc_new2(rb_eRuntimeError,
+ Tcl_GetStringResult(ptr->ip)); */
+ return create_ip_exc(interp, rb_eRuntimeError,
+ Tcl_GetStringResult(ptr->ip));
}
ptr->allow_ruby_exit = 0;
@@ -7050,7 +7053,10 @@ ip_get_variable2_core(interp, argc, argv)
if (ret == (Tcl_Obj*)NULL) {
volatile VALUE exc;
- exc = rb_exc_new2(rb_eRuntimeError, Tcl_GetStringResult(ptr->ip));
+ /* exc = rb_exc_new2(rb_eRuntimeError,
+ Tcl_GetStringResult(ptr->ip)); */
+ exc = create_ip_exc(interp, rb_eRuntimeError,
+ Tcl_GetStringResult(ptr->ip));
/* Tcl_Release(ptr->ip); */
rbtk_release_ip(ptr);
rb_thread_critical = thr_crit_bup;
@@ -7186,7 +7192,10 @@ ip_set_variable2_core(interp, argc, argv)
if (ret == (Tcl_Obj*)NULL) {
volatile VALUE exc;
- exc = rb_exc_new2(rb_eRuntimeError, Tcl_GetStringResult(ptr->ip));
+ /* exc = rb_exc_new2(rb_eRuntimeError,
+ Tcl_GetStringResult(ptr->ip)); */
+ exc = create_ip_exc(interp, rb_eRuntimeError,
+ Tcl_GetStringResult(ptr->ip));
/* Tcl_Release(ptr->ip); */
rbtk_release_ip(ptr);
rb_thread_critical = thr_crit_bup;
@@ -7303,7 +7312,10 @@ ip_unset_variable2_core(interp, argc, argv)
if (ptr->return_value == TCL_ERROR) {
if (FIX2INT(flag) & TCL_LEAVE_ERR_MSG) {
- return rb_exc_new2(rb_eRuntimeError, Tcl_GetStringResult(ptr->ip));
+ /* return rb_exc_new2(rb_eRuntimeError,
+ Tcl_GetStringResult(ptr->ip)); */
+ return create_ip_exc(interp, rb_eRuntimeError,
+ Tcl_GetStringResult(ptr->ip));
}
return Qfalse;
}