From a02684f2d02fd071ca50cfb43a1e2795a6f1d879 Mon Sep 17 00:00:00 2001 From: David Cramer Date: Tue, 12 May 2015 16:39:24 -0700 Subject: [PATCH] Better handling of unreachable file context --- lib/raven/event.rb | 1 + lib/raven/linecache.rb | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/raven/event.rb b/lib/raven/event.rb index ed27850fa..c84e0321a 100644 --- a/lib/raven/event.rb +++ b/lib/raven/event.rb @@ -207,6 +207,7 @@ def self._source_lines(_path, _from, _to) end def get_file_context(filename, lineno, context) + return nil, nil, nil unless Raven::LineCache.is_valid_file(filename) lines = (2 * context + 1).times.map do |i| Raven::LineCache.getline(filename, lineno - context + i) end diff --git a/lib/raven/linecache.rb b/lib/raven/linecache.rb index 743a9a595..b1379ae83 100644 --- a/lib/raven/linecache.rb +++ b/lib/raven/linecache.rb @@ -5,17 +5,24 @@ class LineCache class << self CACHE = {} + def is_valid_file(path) + lines = getlines(path) + return lines != nil + end + def getlines(path) CACHE[path] ||= begin IO.readlines(path) rescue - [] + nil end end def getline(path, n) return nil if n < 1 - getlines(path)[n - 1] + lines = getlines(path) + return nil if lines == nil + lines[n - 1] end end end