Skip to content

Commit

Permalink
Call exc.cause only once in append_causes
Browse files Browse the repository at this point in the history
  • Loading branch information
eregon committed Sep 28, 2022
1 parent 1b622a7 commit 2c34c01
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions src/main/ruby/truffleruby/core/truffle/exception_operations.rb
Original file line number Diff line number Diff line change
Expand Up @@ -193,24 +193,25 @@ def self.backtrace?(exc)
end

def self.append_causes(str, err, causes, reverse, highlight)
if !Primitive.nil?(err.cause) && Exception === err.cause && !causes.has_key?(err.cause)
causes[err.cause] = true
cause = err.cause
if !Primitive.nil?(cause) && Exception === cause && !causes.has_key?(cause)
causes[cause] = true
if reverse
append_causes(str, err.cause, causes, reverse, highlight)
backtrace_message = backtrace_message(highlight, reverse, err.cause.backtrace, err.cause)
append_causes(str, cause, causes, reverse, highlight)
backtrace_message = backtrace_message(highlight, reverse, cause.backtrace, cause)
if backtrace_message.empty?
str << message_and_class(err, highlight)
else
str << backtrace_message
end
else
backtrace_message = backtrace_message(highlight, reverse, err.cause.backtrace, err.cause)
backtrace_message = backtrace_message(highlight, reverse, cause.backtrace, cause)
if backtrace_message.empty?
str << message_and_class(err, highlight)
else
str << backtrace_message
end
append_causes(str, err.cause, causes, reverse, highlight)
append_causes(str, cause, causes, reverse, highlight)
end
end
end
Expand Down

0 comments on commit 2c34c01

Please sign in to comment.