changeset 247:da992144273f

Fix bug in System.arraycopy when called for overlapping array ranges
author Frank Benoit <benoit@tionex.de>
date Mon, 19 May 2008 22:20:13 +0200
parents f08216d53777
children 34409a2fc053
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 17:08:39 2008 +0200
+++ b/dwt/dwthelper/System.d	Mon May 19 22:20:13 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)];