The semantics of operation Move for the bounded forms must match the semantics of the unbounded forms. The post-condition is defined (for all containers) such that when Move completes, the Source container is empty. The fix is to clear the Source container after its elements have been assigned to Target.
Tested on x86_64-pc-linux-gnu, committed on trunk 2011-08-29 Matthew Heaney <hea...@adacore.com> * a-cbhama.ads, a-cbhase.ads (Move): Clear Source following assignment to Target.
Index: a-cbhama.adb =================================================================== --- a-cbhama.adb (revision 178242) +++ a-cbhama.adb (working copy) @@ -728,7 +728,8 @@ "attempt to tamper with cursors (container is busy)"; end if; - Assign (Target => Target, Source => Source); + Target.Assign (Source); + Source.Clear; end Move; ---------- Index: a-cbhase.adb =================================================================== --- a-cbhase.adb (revision 178155) +++ a-cbhase.adb (working copy) @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2010, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -925,7 +925,8 @@ "attempt to tamper with cursors (container is busy)"; end if; - Assign (Target => Target, Source => Source); + Target.Assign (Source); + Source.Clear; end Move; ----------