!standard 13.11(21) 15-02-23 AI12-0142-1/03 !standard 13.11.4(21/3) !standard 13.11.4(31/3) !class binding interpretation 14-12-04 !status Corrigendum 2015 15-01-28 !status WG9 Approved 15-06-26 !status ARG Approved 9-0-0 15-01-28 !status work item 14-12-04 !status received 14-10-28 !priority Low !difficulty Medium !qualifier Omission !subject Bad subpool implementations !summary Add erroneous execution wording for subpools. !question We have 13.11(21) to say that compilers do not have to worry about malfunctioning pool implementations. However, this wording does not cover any memory allocated by Allocate_From_Subpool (as in that case, Allocate is never called). Should we have such wording? (Yes.) !recommendation (See Summary.) !wording Add after 13.11.4(31/3): Erroneous Execution If Allocate_From_Subpool does not meet one or more of the requirements on the Allocate procedure as given in the Erroneous Execution rules of 13.11, then the program execution is erroneous. !discussion 13.11(21) is cleverly worded such that problems caused by the implementation of Deallocate or external action (as could happen if the pool type is not encapsulated) are blamed on the implementation of Allocate and thus also can cause erroneous execution. Specifically, such problems can cause the allocated memory to be used for some other purpose while the pool element still exists. For allocation from a subpool, Allocate need never be called. If Allocate is never called, 13.11(21) does not apply. But of course Allocate_From_Subpool needs the same sort of requirements that Allocate does. 13.11.4(21/3) attempts to apply those requirements to Allocate_From_Subpool, but it fails to state the consequences. Thus we add a sentence under the proper heading to do that. !corrigendum 13.11.4(31/3) @dinsa Unless overridden, Default_Subpool_for_Pool propagates Program_Error. @dinst @s8<@i> If Allocate_From_Subpool does not meet one or more of the requirements on the Allocate procedure as given in the Erroneous Execution rules of 13.11, then the program execution is erroneous. !ASIS No ASIS effect. !ACATS test We need an ACATS B-Test to verify that the new rule(s) are enforced. !appendix ****************************************************************