diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-01-25 05:09:22 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-01-25 05:09:22 +0000 |
commit | 4f7d0eaaf362cb6e43077637ab6db7da118679ab (patch) | |
tree | 1bd9e44e4d42711ff094237b838b3f37a02af210 /ext/tk/tkutil.c | |
parent | 131824065d58465d03536167290083b2c0ccc1e0 (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.c | 10 |
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); |