* ext/tk/lib/multi-tk.rb: improve exit operation

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagai 2004-09-17 07:09:28 +00:00
parent bdd1ba494b
commit 7b66963f61
2 changed files with 71 additions and 55 deletions

View File

@ -1,3 +1,7 @@
Fri Sep 17 16:07:09 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: improve exit operation
Fri Sep 17 15:01:57 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c: fix SEGV when (thread_)vwait or

View File

@ -194,12 +194,14 @@ class MultiTkIp
ip._invoke(name, 'eval', 'destroy', '.')
rescue Exception
end
begin
# safe_base?
ip._eval_without_enc("::safe::interpConfigure #{name}")
if ip._eval_without_enc("catch {::safe::interpConfigure #{name}}") == '0'
begin
ip._eval_without_enc("::safe::interpDelete #{name}")
rescue Exception
end
end
=begin
if ip._invoke('interp', 'exists', name) == '1'
begin
@ -240,11 +242,15 @@ class MultiTkIp
rescue Exception
end
=end
begin
# safe_base?
@interp._eval_without_enc("::safe::interpConfigure #{name}")
if @interp._eval_without_enc("catch {::safe::interpConfigure #{name}}") == '0'
begin
@interp._eval_without_enc("::safe::interpDelete #{name}")
rescue Exception
else
next if subip.deleted?
end
end
if subip.respond_to?(:safe_base?) && subip.safe_base? &&
!subip.deleted?
# do 'exit' to call the delete_hook procedure
@ -258,7 +264,6 @@ class MultiTkIp
rescue Exception
end
end
end
}
begin
@ -298,7 +303,7 @@ class MultiTkIp
if e.backtrace[0] =~ /^(.+?):(\d+):in `(exit|exit!|abort)'/
ret = ($3 == 'exit')
unless @interp.deleted?
@slave_ip_tbl.each_value{|subip|
@slave_ip_tbl.each{|name, subip|
_destroy_slaves_of_slaveIP(subip)
begin
subip._eval_without_enc("foreach i [after info] {after cancel $i}")
@ -310,11 +315,15 @@ class MultiTkIp
rescue Exception
end
=end
begin
# safe_base?
@interp._eval_without_enc("::safe::interpConfigure #{name}")
if @interp._eval_without_enc("catch {::safe::interpConfigure #{name}}") == '0'
begin
@interp._eval_without_enc("::safe::interpDelete #{name}")
rescue Exception
else
next if subip.deleted?
end
end
if subip.respond_to?(:safe_base?) && subip.safe_base? &&
!subip.deleted?
# do 'exit' to call the delete_hook procedure
@ -328,7 +337,6 @@ class MultiTkIp
rescue Exception
end
end
end
}
begin
@ -1784,7 +1792,7 @@ class MultiTkIp
end
def delete
@slave_ip_tbl.each_value{|subip|
@slave_ip_tbl.each{|name, subip|
_destroy_slaves_of_slaveIP(subip)
=begin
begin
@ -1796,11 +1804,16 @@ class MultiTkIp
subip._eval_without_enc("foreach i [after info] {after cancel $i}")
rescue Exception
end
begin
# safe_base?
@interp._eval_without_enc("::safe::interpConfigure #{name}")
if @interp._eval_without_enc("catch {::safe::interpConfigure #{name}}") == '0'
begin
@interp._eval_without_enc("::safe::interpDelete #{name}")
rescue Exception
else
next if subip.deleted?
end
end
if subip.respond_to?(:safe_base?) && subip.safe_base? &&
!subip.deleted?
# do 'exit' to call the delete_hook procedure
@ -1814,7 +1827,6 @@ class MultiTkIp
rescue Exception
end
end
end
}
begin