Hi!

     Ron, in the file source/vm/arrays.c , function hb_arrayEval() ,
about line 1369, it says "pBaseArray->uiFlags |= 0xF000;" . Can I
move it?

          ulLen = pBaseArray->ulLen;
          pBaseArray->uiFlags |= 0xF000;      ///////// From here...

          if( pulStart && ( *pulStart >= 1 ) )
          {
             ulStart = *pulStart;
          }
          if( ulStart <= ulLen )
          {
             ulCount = ulLen - ulStart + 1;
             if( pulCount && ( *pulCount <= ulLen - ulStart ) )
             {
                ulCount = *pulCount;
             }
             if( ulStart + ulCount > ulLen )             /* check range */
             {
                ulCount = ulLen - ulStart + 1;
             }

             // pBaseArray->uiFlags |= 0xF000;  ////// To here........

             for( ulStart--; ulCount > 0; ulCount--, ulStart++ )
             {
                hb_vmPushSymbol( &hb_symEval );
                hb_vmPush( bBlock );
                hb_vmPush( pBaseArray->pItems + ulStart );
                hb_vmPushLong( ulStart + 1 );
                hb_vmSend( 2 );
             }

             pBaseArray->uiFlags = uiFlags;
             ...
             ...

In other case, an empty array will set this flag on, but it will not
be removed.

     In other hand, same in the file source/vm/arrays.c , function
hb_arraySize() , about line 175, the code is:

          if( pBaseArray->ulLen > ulLen )
          {
             // Clipper defers all aSize() shrinking operations when in aEval()!
             if( ( pBaseArray->uiFlags & 0xF000 ) != 0 )
             {
                pBaseArray->ulLen = ulLen;
                return TRUE;
             }
             pItems = pBaseArray->pItems + ulLen;
             ulPos = pBaseArray->ulLen - ulLen;
             do
             {
                hb_itemSetNil( pItems ); //don't use ++ here
                pItems++;
             } while( --ulPos );
          }
          ...
          ...

When "( pBaseArray->uiFlags & 0xF000 )" is on, items deleted with
"ASIZE( aArray, LEN( aArray ) - 1 )" aren't cleared. Is it possible
any "complex" item would not be freed?

Atte.
  Vic

------------------------------------------------------------------------------
Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
software. With Adobe AIR, Ajax developers can use existing skills and code to
build responsive, highly engaging applications that combine the power of local
resources and data with the reach of the web. Download the Adobe AIR SDK and
Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
_______________________________________________
xHarbour-developers mailing list
xHarbour-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xharbour-developers

Reply via email to