Index: runtime/vm/object.cc |
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc |
index 93f2818be2c00f6f948d0d9afdcc0d3d6ec9ae39..e5e9109cdb39813f4c8ad52ace40f48bf29da0f1 100644 |
--- a/runtime/vm/object.cc |
+++ b/runtime/vm/object.cc |
@@ -21079,7 +21079,7 @@ const char* Stacktrace::ToCStringInternal(intptr_t* frame_index, |
for (intptr_t i = 0; (i < Length()) && (*frame_index < max_frames); i++) { |
function = FunctionAtFrame(i); |
if (function.IsNull()) { |
- // Check if null function object indicates a gap in a StackOverflow or |
+ // Check for a null function, which indicates a gap in a StackOverflow or |
// OutOfMemory trace. |
if ((i < (Length() - 1)) && |
(FunctionAtFrame(i + 1) != Function::null())) { |
@@ -21089,6 +21089,9 @@ const char* Stacktrace::ToCStringInternal(intptr_t* frame_index, |
OS::SNPrint(chars, truncated_len, "%s", kTruncated); |
frame_strings.Add(chars); |
total_len += truncated_len; |
+ ASSERT(PcOffsetAtFrame(i) != Smi::null()); |
+ // To account for gap frames. |
+ (*frame_index) += Smi::Value(PcOffsetAtFrame(i)); |
} |
} else { |
code = CodeAtFrame(i); |