[Conkeror] [PATCH 1/3] Rewrite get_caller_source_code_reference to use Components.stack
David Glasser
glasser at davidglasser.net
Fri Mar 28 15:25:17 PDT 2008
diff --git a/modules/utils.js b/modules/utils.js
index c855960..f3677fb 100644
--- a/modules/utils.js
+++ b/modules/utils.js
@@ -420,18 +420,17 @@ source_code_reference.prototype = {
};
function get_caller_source_code_reference(extra_frames_back) {
- var stack = Error().stack.split("\n");
- if (extra_frames_back == null)
- extra_frames_back = 0;
- var i = extra_frames_back + 3;
- if (stack.length <= i)
- return null;
- var s = stack[i];
- var regexp = /^[^@]*@(.*):([0-9]*)$/m;
- var match = regexp.exec(s);
- if (match.index != 0)
- return null;
- return new source_code_reference(match[1], match[2]);
+ var frames_to_skip = 2;
+ if (extra_frames_back != null)
+ frames_to_skip += extra_frames_back;
+
+ for (let f = Components.stack; f != null; f = f.caller) {
+ if (frames_to_skip > 0) {
+ --frames_to_skip;
+ continue;
+ }
+ return new source_code_reference(f.filename, f.sourceLine);
+ }
}
require_later("external-editor.js");
--
1.5.2.5
More information about the Conkeror
mailing list