2015-07-31 17:12 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* src/vm/asort.c
    ! fixed missing nStart checking during array items reordering

  * utils/hbtest/rt_array.prg
    * updated Harbour specific results - I thought that someone
      invested time to exactly replicate CA-Cl*pper ASort() sorting
      but in fact Harbour specific resutls where hardcoded inside
      HBTEST so previous code was not Cl*pper compatible in the
      same way as current one.
This commit is contained in:
Przemysław Czerpak
2015-07-31 17:12:25 +02:00
parent 964e9a6695
commit 748cf7e81f
3 changed files with 27 additions and 16 deletions

View File

@@ -10,6 +10,17 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2015-07-31 17:12 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/asort.c
! fixed missing nStart checking during array items reordering
* utils/hbtest/rt_array.prg
* updated Harbour specific results - I thought that someone
invested time to exactly replicate CA-Cl*pper ASort() sorting
but in fact Harbour specific resutls where hardcoded inside
HBTEST so previous code was not Cl*pper compatible in the
same way as current one.
2015-07-31 16:42 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gtxwc/gtxwc.c
* src/rtl/mlcfunc.c

View File

@@ -309,9 +309,9 @@ static void hb_arraySortStart( PHB_BASEARRAY pBaseArray, PHB_ITEM pBlock,
for( nPos = 0; nPos < nCount; ++nPos )
{
if( nPos != pDest[ nPos ] )
if( nPos + nStart != pDest[ nPos ] )
{
hb_itemSwap( pBaseArray->pItems + nPos,
hb_itemSwap( pBaseArray->pItems + nPos + nStart,
pBaseArray->pItems + pDest[ nPos ] );
pDest[ pPos[ nPos ] ] = pDest[ nPos ];
pPos[ pDest[ nPos ] - nStart ] = pPos[ nPos ];

View File

@@ -296,20 +296,20 @@ PROCEDURE Main_ARRAY()
sorting algorithms. Anyhow the results pattern should match.
[vszakats] */
#ifdef __HARBOUR__
HBTEST TAStr( ASort( TARRv(),,, {|| NIL } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| hb_SToD() } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "0" } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "1" } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "2" } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "a" } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "A" } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "" } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "z" } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| .T. } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| .F. } ) ) IS "FEIDGCHBJA"
HBTEST TAStr( ASort( TARRv(),,, {|| 2 } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| 1 } ) ) IS "DCBAEFIHGJ"
HBTEST TAStr( ASort( TARRv(),,, {|| 0 } ) ) IS "FEIDGCHBJA"
HBTEST TAStr( ASort( TARRv(),,, {|| NIL } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| hb_SToD() } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "0" } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "1" } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "2" } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "a" } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "A" } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "" } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| "z" } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| .T. } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| .F. } ) ) IS "JIHGFEDCBA"
HBTEST TAStr( ASort( TARRv(),,, {|| 2 } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| 1 } ) ) IS "ABCDEFGHIJ"
HBTEST TAStr( ASort( TARRv(),,, {|| 0 } ) ) IS "JIHGFEDCBA"
#else
HBTEST TAStr( ASort( TARRv(),,, {|| NIL } ) ) IS "IHGFEDCBAJ"
HBTEST TAStr( ASort( TARRv(),,, {|| hb_SToD() } ) ) IS "IHGFEDCBAJ"