This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
There are several operations (e.g. Find) that call the generic operation for element equality. In principle it is possible for the generic actual to tamper with the elements of the container while the operation is in progress, but such behavior would be undefined. AI05-0022 requires that the implementation detect when container manipulation occurs through the equality operator, and to raise Program_Error as necessary to prevent erroneous execution. We do that here by incrementing the lock counters before entering the loop. If tamper-sensitive operations are called while the loop is executing, the non-zero lock count will be detected and Program_Error raised. The text of AI05-0022 can be found here: http://www.ada-auth.org/cgi-bin/cvsweb.cgi/ai05s/ai05-0022-1.txt Tested on x86_64-pc-linux-gnu, committed on trunk 2013-04-11 Matthew Heaney <heaney@adacore.com> * a-convec.adb, a-coinve.adb, a-cobove.adb ("="): Increment lock counts before entering loop. (Find, Find_Index): Ditto. (Is_Sorted, Merge, Sort): Ditto. (Reverse_Find, Reverse_Find_Index): Ditto.
Attachment:
difs
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |