Mercurial > projects > dwt-linux
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)];