changeset 225:cba62ee36290

Fix bug in System.arraycopy when called for overlapping array ranges
author Frank Benoit <benoit@tionex.de>
date Mon, 19 May 2008 22:19:44 +0200
parents 679fb4a215dc
children 53c57b061fd9
files dwt/dwthelper/System.d
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/dwt/dwthelper/System.d	Mon May 19 14:35:49 2008 +0200
+++ b/dwt/dwthelper/System.d	Mon May 19 22:19:44 2008 +0200
@@ -80,8 +80,15 @@
         debug{validCheck(src.length - srcPos, dest.length - destPos, len);}
 
         if(src is dest){
-            for(int i=0; i<len; ++i){
-                dest[destPos+i] = src[srcPos+i];
+            if( destPos < srcPos ){
+                for(int i=0; i<len; ++i){
+                    dest[destPos+i] = src[srcPos+i];
+                }
+            }
+            else{
+                for(int i=len-1; i>=0; --i){
+                    dest[destPos+i] = src[srcPos+i];
+                }
             }
         }else{
             dest[destPos..(len+destPos)] = src[srcPos..(len+srcPos)];