diff options
author | Daniel Gröber <dxld@darkboxed.org> | 2019-06-06 08:14:19 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-06-09 18:48:38 -0400 |
commit | 8e60e3f0c6c1482f448dd4d24d716d34046503e9 (patch) | |
tree | 557462f40e84094b336276089796764da2613511 /rts/RetainerProfile.c | |
parent | 5023adceeb59e9a2b57cda2e69cd2a6152a13ead (diff) | |
download | haskell-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.
Diffstat (limited to 'rts/RetainerProfile.c')
-rw-r--r-- | rts/RetainerProfile.c | 2 |
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) { |