summaryrefslogtreecommitdiff
path: root/ext/tk/tkutil.c
diff options
context:
space:
mode:
authornagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-01-25 05:09:22 +0000
committernagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-01-25 05:09:22 +0000
commit4f7d0eaaf362cb6e43077637ab6db7da118679ab (patch)
tree1bd9e44e4d42711ff094237b838b3f37a02af210 /ext/tk/tkutil.c
parent131824065d58465d03536167290083b2c0ccc1e0 (diff)
* ext/tcltklib/tcltklib.c: fix SEGV bug; trouble on canceling remained
after scripts [ruby-dev:25479]: NULL current namespce when deleting Tk interpreter [ruby-talk:126225] * ext/tcltklib/extconf.rb: bug fix; TCL_ENABLE_THREAD flag is inverted [ruby-talk:126360] * ext/tcltklib/extconf.rb: add yet another native-thread check * ext/tk/tkutil.c: fix SEGV bug; NULL string pointer when finalize Ruby interpreter * ext/tk/lib/multi-tk.rb: avoid warning for deleted safeTk ip frame * ext/tk/lib/tk/bindtag.rb: bug fix; new method of named bindtag doesn't return the created object [ruby-dev:25479] * ext/tk/lib/tk/menu.rb: bug on treating arguments [ruby-dev:25479] * ext/tk/lib/tk.rb: bug fix; cannot accept a callback ID string for a command argument [ruby-dev:25479] * ext/tk/lib/multi-tk.rb: ditto * ext/tk/lib/tk/*.rb: ditto * ext/tk/lib/tkextlib/*.rb: ditto * ext/tk/sample/demos-jp/anilabel.rb: new demo script * ext/tk/sample/demos-en/anilabel.rb: ditto * ext/tk/sample/tkHTML/ss.rb: local variable scope bug fix [ruby-dev:25479] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7821 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/tkutil.c')
-rw-r--r--ext/tk/tkutil.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/ext/tk/tkutil.c b/ext/tk/tkutil.c
index e36f92af04..d88f7b9a72 100644
--- a/ext/tk/tkutil.c
+++ b/ext/tk/tkutil.c
@@ -8,7 +8,7 @@
************************************************/
-#define TKUTIL_RELEASE_DATE "2004-12-23"
+#define TKUTIL_RELEASE_DATE "2005-01-25"
#include "ruby.h"
#include "rubysig.h"
@@ -824,6 +824,8 @@ tcl2rb_bool(self, value)
value = rb_funcall(value, ID_downcase, 0);
+ if (RSTRING(value)->ptr == (char*)NULL) return Qnil;
+
if (RSTRING(value)->ptr[0] == '\0'
|| strcmp(RSTRING(value)->ptr, "0") == 0
|| strcmp(RSTRING(value)->ptr, "no") == 0
@@ -880,6 +882,8 @@ tkstr_to_number(value)
{
rb_check_type(value, T_STRING);
+ if (RSTRING(value)->ptr == (char*)NULL) return INT2FIX(0);
+
return rb_rescue2(tkstr_to_int, value,
tkstr_rescue_float, value,
rb_eArgError, 0);
@@ -916,6 +920,8 @@ tcl2rb_string(self, value)
{
rb_check_type(value, T_STRING);
+ if (RSTRING(value)->ptr == (char*)NULL) return rb_tainted_str_new2("");
+
return tkstr_to_str(value);
}
@@ -926,6 +932,8 @@ tcl2rb_num_or_str(self, value)
{
rb_check_type(value, T_STRING);
+ if (RSTRING(value)->ptr == (char*)NULL) return rb_tainted_str_new2("");
+
return rb_rescue2(tkstr_to_number, value,
tkstr_to_str, value,
rb_eArgError, 0);