CVS difference for ais/ai-00179.txt
--- ais/ai-00179.txt 1998/09/30 00:17:33 1.1
+++ ais/ai-00179.txt 1999/07/21 03:10:58 1.2
@@ -1,4 +1,4 @@
-!standard 07.06.01 (17) 97-11-14 AI95-00179/02
+!standard 07.06.01 (17) 99-05-27 AI95-00179/03
!class confirmation 97-03-19
!status WG9 Approved 97-11-14
!status ARG Approved (subject to editorial review) 9-0-1 97-04-11
@@ -8,7 +8,7 @@
!difficulty Medium
!subject Finalization and Unchecked_Deallocation
-!summary 97-05-08
+!summary
Consider an instance Free of Unchecked_Deallocation for a type with
controlled parts. Free will first finalize its parameter. If some
@@ -16,7 +16,7 @@
is deallocated, and whether the object ceases to exist. Finalize might
be called again on that same object.
-!question 97-05-08
+!question
13.11.2(9) says that Free first performs finalization, then deallocates
the storage. 7.6.1(17) says that (if Finalize propagates an exception,)
@@ -26,7 +26,7 @@
deallocated? Is it possible that Finalize will be called again on the
same object?
-!response 97-05-08
+!response
The RM is unclear on this point. There are three alternatives:
@@ -51,8 +51,13 @@
situations, programmers should either prove that no such exception can
happen, or put a "when others =>" clause in each Finalize procedure.
-!appendix 97-03-19
+!ACATS test
+No ACATS test is possible. This AI says that the behavior is unspecified,
+so there is nothing to test for.
+
+!appendix
+
!section 7.6.1(17)
!subject Finalization and Unchecked_Deallocation
!reference RM95-7.6.1(17)
@@ -128,7 +133,7 @@
1. Deallocate subcomponents if necessary, calling finalization
routines.
-
+
2. Call finalization for the object.
3. Deallocate storage.
@@ -171,7 +176,7 @@
>
> 1. Deallocate subcomponents if necessary, calling finalization
>routines.
->
+>
> 2. Call finalization for the object.
>
> 3. Deallocate storage.
@@ -232,7 +237,7 @@
> deallocates the storage. 7.6.1(17) says that (if Finalize raises
> an exception,) Program_Error is raised after any other
> finalizations are performed.
->
+>
> This implies that the object (and any subcomponents) is not
> destroyed or deallocated when a Program_Error is raised because of
> an exception in Finalize.
@@ -264,7 +269,7 @@
Robert wrote:
> My model of what goes on is as follows:
->
+>
> 1. Deallocate subcomponents if necessary, calling finalization
> routines.
@@ -358,7 +363,7 @@
> 1. Deallocate subcomponents if necessary, calling finalization
>routines.
- >
+ >
> 2. Call finalization for the object.
>
> 3. Deallocate storage.
Questions? Ask the ACAA Technical Agent