@@ -71,7 +71,7 @@ prepareStackTrace = (error, structured_stack_trace) ->
7171 error .__previous__ = current_trace_error if ! error .__previous__ ? and in_prepare is 1
7272
7373 if error .__previous__ ?
74- previous_stack = error .__previous__ .stack
74+ previous_stack = error .__previous__ .__cached_trace__
7575 if previous_stack ? .length > 0
7676 error .__cached_trace__ .push (create_callsite (exports .empty_frame ))
7777 error .__cached_trace__ .push (previous_stack... )
@@ -90,7 +90,15 @@ limit_frames = (stack) ->
9090 while previous? and count > 1
9191 previous = previous .__previous__
9292 -- count
93- delete previous .__previous__ if previous?
93+ if previous?
94+ which_previous_must_delete = previous
95+ if previous ? .__previous__ ? .__cached_trace__
96+ len = previous .__previous__ .__cached_trace__ .length
97+ previous = stack
98+ while previous? and previous != which_previous_must_delete .__previous__
99+ previous .__cached_trace__ .length -= (len+ 1 )
100+ previous = previous .__previous__
101+ delete previous .__previous__
94102
95103ERROR_ID = 1
96104
@@ -111,6 +119,7 @@ wrap_callback = (callback, location) ->
111119 trace_error .__location__ = location
112120 trace_error .__previous__ = current_trace_error
113121 trace_error .__trace_count__ = if current_trace_error? then current_trace_error .__trace_count__ + 1 else 1
122+ trace_error .stack
114123
115124 limit_frames (trace_error)
116125
0 commit comments