Version 1.5 of ai12s/ai12-0142-1.txt
!standard 13.11(21) 15-02-23 AI05-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)
Insert after the paragraph:
Unless overridden, Default_Subpool_for_Pool propagates Program_Error.
the new paragraph:
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.
!ASIS
No ASIS effect.
!ACATS test
We need an ACATS B-Test to verify that the new rule(s) are enforced.
!appendix
****************************************************************
Questions? Ask the ACAA Technical Agent