MPS issue job004088

TitleCan't destroy an allocation point with a reserve
Statusopen
Prioritynice
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionIf you call mps_ap_create_k to create an allocation point, call mps_reserve to reserve an object, and then call mps_ap_destroy, then you get an assertion failure here:

buffer.c:356: BufferIsReady(buffer)

But is this really necessary? The allocation point protocol says that you have to call mps_commit, but in languages with exceptions, it might be the case that an exception occurs between mps_reserve and mps_commit, and at that point the application might want to exit cleanly by destroying MPS data structures.
AnalysisIt's not clear what this assertion protects (other than the allocation point protocol itself).
How foundmanual_test
EvidenceNone
Created byGareth Rees
Created on2018-07-06 14:33:12
Last modified byGareth Rees
Last modified on2018-07-06 14:33:12
History2018-07-06 GDR Created.