When splicing a source list before a position in a target list,
the items must be spliced in order from first to last; otherwise,
(splicing from last to first) the items become reversed as they
are moved to the target.
Tested on x86_64-pc-linux-gnu, committed on trunk
2011-08-03 Matthew Heaney <[email protected]>
* a-cbdlli.adb (Splice): move source items from first to last
Index: a-cbdlli.adb
===================================================================
--- a-cbdlli.adb (revision 176998)
+++ a-cbdlli.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- --
@@ -1486,10 +1486,9 @@
"attempt to tamper with cursors of Source (list is busy)";
end if;
- loop
- Insert (Target, Before, Source.Nodes (Source.Last).Element);
- Delete_Last (Source);
- exit when Is_Empty (Source);
+ while not Is_Empty (Source) loop
+ Insert (Target, Before, Source.Nodes (Source.First).Element);
+ Delete_First (Source);
end loop;
end Splice;