Mercurial > projects > dwt-win
diff dwt/dwthelper/System.d @ 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 | ab60f3309436 |
children | d10ff1f47f84 |
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)];