summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gröber <dxld@darkboxed.org>2019-06-06 08:14:19 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-06-09 18:48:38 -0400
commit8e60e3f0c6c1482f448dd4d24d716d34046503e9 (patch)
tree557462f40e84094b336276089796764da2613511
parent5023adceeb59e9a2b57cda2e69cd2a6152a13ead (diff)
downloadhaskell-8e60e3f0c6c1482f448dd4d24d716d34046503e9.tar.gz
rts: Fix RetainerProfile early return with TREC_CHUNK
When pop() returns with `*c == NULL` retainerProfile will immediately return. All other code paths is pop() continue with the next stackElement when this happens so it seems weird to me that TREC_CHUNK we would suddenly abort everything even though the stack might still have elements left to process.
-rw-r--r--rts/RetainerProfile.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c
index a4b06398b5..360db37a19 100644
--- a/rts/RetainerProfile.c
+++ b/rts/RetainerProfile.c
@@ -849,7 +849,7 @@ pop( StgClosure **c, StgClosure **cp, retainer *r )
if (entry_no == ((StgTRecChunk *)se->c)->next_entry_idx) {
*c = NULL;
popOff();
- return;
+ break;
}
entry = &((StgTRecChunk *)se->c)->entries[entry_no];
if (field_no == 0) {