CVS difference for ai12s/ai12-0052-1.txt
--- ai12s/ai12-0052-1.txt 2013/01/04 04:38:04 1.3
+++ ai12s/ai12-0052-1.txt 2013/12/19 03:18:50 1.4
@@ -1,8 +1,8 @@
-!standard A(3/2) 13-01-02 AI12-0052-1/02
+!standard A(3/2) 13-12-18 AI12-0052-1/03
!standard A.10.3(21)
-!standard A.16(123/2)
-!standard A.16(30/2)
!class binding interpretation 12-12-04
+!status Corrigendum 2014 13-12-18
+!status ARG Approved 7-0-4 13-11-16
!status work item 12-12-04
!status received 12-07-19
!priority Low
@@ -10,8 +10,7 @@
!subject Implicit objects are considered overlapping
!summary
-Implicitly referenced objects (like the default output file in Text_IO and the
-current default directory in Directories) defined in language-defined units are
+The default input and output files of Text_IO are
considered implicit parameters to the associated routines for the purposes of
determining whether A(3) applies.
@@ -45,18 +44,18 @@
subprogram perform as specified, so long as all parameters that could be passed
by reference denote nonoverlapping objects.
-For the purpose of determining whether concurrent calls on text input-output
+{For the purpose of determining whether concurrent calls on text input-output
subprograms are required to perform as specified above, when calling a
subprogram within Text_IO or its children that implicitly operates on one of the
default input/output files, the subprogram is considered to have a
-parameter of Current_Input or Current_Output (as appropriate).
+parameter of Current_Input or Current_Output (as appropriate).}
Add AARM notes:
AARM Ramification: So long as the parameters are disjoint, concurrent calls
on the same language-defined subprogram, and concurrent calls on two
different language-defined subprograms are required to work. But concurrent
- calls on overlapping objects (be they of the same or different
- language-defined subprograms) are NOT required to work (being unsafe use of
+ calls operating on overlapping objects (be they of the same or different
+ language-defined subprograms) are NOT required to work (being erroneous use of
shared variables) unless both subprograms are required to pass the associated
parameter by-copy.
@@ -76,7 +75,7 @@
subprograms are required to perform as specified, subprograms that implicitly
operate on one of the default input/output files are considered to have a
parameter of Current_Input or Current_Output (as appropriate). The result of
-Current_Output is considered to be overlapping with the file give to the latest
+Current_Output is considered to be overlapping with the file given to the latest
call of Set_Output (or Standard_Output if Set_Output hasn't been called); a
corresponding consideration applies to the result of Current_Input.
See the introduction of Annex A for details.
@@ -126,7 +125,7 @@
an implicit parameter. However, this would make these packages harder to use
in a multitasking system. Moreover, the calls are likely to be expensive anyway
(if this state is managed by the underlying target OS), and it is quite
-likely that the target OS already provides some guarentees for concurrent
+likely that the target OS already provides some guarantees for concurrent
access.
Therefore, we require these packages to "work" when called concurrently.
@@ -139,6 +138,26 @@
locales only can be read (if setting is provided, it's not via a language-defined
subprogram, and thus isn't covered by A(3)). Of course, implementations can do
what they want with implementation-defined routines.
+
+!corrigendum A(3)
+
+@drepl
+The implementation shall ensure that each language-defined subprogram is
+reentrant in the sense that concurrent calls on the same subprogram perform as
+specified, so long as all parameters that could be passed by reference denote
+nonoverlapping objects.
+@dby
+The implementation shall ensure that each language-defined subprogram is
+reentrant in the sense that concurrent calls on any language-defined
+subprogram perform as specified, so long as all parameters that could be passed
+by reference denote nonoverlapping objects.
+
+For the purpose of determining whether concurrent calls on text input-output
+subprograms are required to perform as specified above, when calling a
+subprogram within Text_IO or its children that implicitly operates on one of the
+default input/output files, the subprogram is considered to have a
+parameter of Current_Input or Current_Output (as appropriate).
+
!ACATS test
Questions? Ask the ACAA Technical Agent