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