From 56eacc7b8dc2a58949ff8211b982493e21f7ab33 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Tue, 15 Apr 2008 15:01:37 +0200 Subject: debug logging: don't raise on SecurityError Some scripts (from the scripts plugin) can trigger the logging functions (debug, warning, info etc) in a $SAFE context: this causes the logger to fail. Catch SecurityError in raw_log() to prevent these valid scripts from failing. --- lib/rbot/ircbot.rb | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) (limited to 'lib') diff --git a/lib/rbot/ircbot.rb b/lib/rbot/ircbot.rb index 8767531d..cd073b32 100644 --- a/lib/rbot/ircbot.rb +++ b/lib/rbot/ircbot.rb @@ -39,26 +39,29 @@ class Exception end def rawlog(level, message=nil, who_pos=1) - call_stack = caller - if call_stack.length > who_pos - who = call_stack[who_pos].sub(%r{(?:.+)/([^/]+):(\d+)(:in .*)?}) { "#{$1}:#{$2}#{$3}" } - else - who = "(unknown)" - end - # Output each line. To distinguish between separate messages and multi-line - # messages originating at the same time, we blank #{who} after the first message - # is output. - # Also, we output strings as-is but for other objects we use pretty_inspect - case message - when String - str = message - else - str = message.pretty_inspect + begin + call_stack = caller + if call_stack.length > who_pos + who = call_stack[who_pos].sub(%r{(?:.+)/([^/]+):(\d+)(:in .*)?}) { "#{$1}:#{$2}#{$3}" } + else + who = "(unknown)" + end + # Output each line. To distinguish between separate messages and multi-line + # messages originating at the same time, we blank #{who} after the first message + # is output. + # Also, we output strings as-is but for other objects we use pretty_inspect + case message + when String + str = message + else + str = message.pretty_inspect + end + str.each_line { |l| + $logger.add(level, l.chomp, who) + who.gsub!(/./," ") + } + rescue SecurityError end - str.each_line { |l| - $logger.add(level, l.chomp, who) - who.gsub!(/./," ") - } end def log_session_start -- cgit v1.2.3