Changeset 142 for trunk/orca/ovalue.c

Show
Ignore:
Timestamp:
05/09/06 22:54:53 (3 years ago)
Author:
krobillard
Message:

Fixed GC issues created by the changes to function argument handling [140].
Also fixed mold and form so they hold their argument from the GC.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/orca/ovalue.c

    r140 r142  
    15611561OR_NATIVE( orEitherNative ) 
    15621562{ 
    1563     OValue* blkArg = a1 + 2;; 
     1563    OValue* blkArg = a1 + 2; 
    15641564    if( a1->type != OT_NONE ) 
    15651565    { 
     
    29702970        int vi; 
    29712971 
    2972         orRefAvailErr( 3 ) 
    2973         orRefPush( OT_BLOCK, a1->index ); 
     2972        blkN = a1->index; 
     2973 
     2974        orRefAvailErr( 2 ) 
     2975        orRefPush( OT_BLOCK, blkN ); 
     2976 
    29742977        rblk = orMakeBlock(0); 
    2975  
    29762978        nblkN = orBlockN(rblk); 
    2977         blkN = a1->index; 
    2978         blk = orBLOCK( a1 ); 
     2979 
     2980        blk = orBlockPtr( blkN ); 
    29792981        used = blk->used; 
    29802982        vi = a1->series.it; 
    29812983 
    2982         orRefPush( OT_BLOCK, blkN ); 
    29832984        orRefPush( OT_BLOCK, nblkN ); 
    29842985 
     
    30003001        } 
    30013002 
    3002         orRefPop( 3 ); 
     3003        orRefPop( 2 ); 
    30033004        orResultBLOCK( nblkN ); 
    30043005    } 
     
    43654366    orRefPush( OT_BLOCK, ctx.vblkN ); 
    43664367 
     4368    // Initialize values for GC. 
     4369    it   = vblk->values; 
    43674370    next = vblk->values + total; 
     4371    while( it != next ) 
     4372    { 
     4373        orSetTF( it, OT_NONE ); 
     4374        ++it; 
     4375    } 
     4376 
    43684377    orSetTF( next, OT_UNSET ); 
    43694378    next->RECURSE_COUNT = 0;