Changeset 84 for trunk/orca/context.c
- Timestamp:
- 03/09/06 01:20:06 (3 years ago)
- Files:
-
- 1 modified
-
trunk/orca/context.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/orca/context.c
r81 r84 1237 1237 // is so slow). 1238 1238 1239 orRefAvailErr( 4 )1239 orRefAvailErr( 5 ) // 4 + block-temp 1240 1240 1241 1241 // Must hold body & a2 in case orMakeContext() or orCopyBlock() trigger … … 1303 1303 case OT_PATH: 1304 1304 { 1305 OIndex keeptBlkIndex; 1306 OBlock* keeptBlock; 1307 OValue *keept; 1308 1305 1309 blk = orBlockPtr( serN ); 1306 OValue *keept = calloc(blk->used,sizeof(OValue)); 1310 keeptBlock = orMakeBlock( blk->used ); 1311 keeptBlkIndex = orBlockN( keeptBlock ); 1312 orRefPush( OT_BLOCK, keeptBlkIndex ); 1313 keept = keeptBlock->values; 1307 1314 send = blk->used; 1308 1315 … … 1319 1326 blk = orBlockPtr( serN ); // Reacquire. 1320 1327 send = blk->used; 1328 keeptBlock = orBlockPtr( keeptBlkIndex ); 1329 keept = keeptBlock->values; 1321 1330 1322 1331 if( !orIfTrue(orRESULT)){ 1323 1332 memCpy( keept + sdest, blk->values + si, vlen * sizeof(OValue) ); 1324 1333 sdest += vlen; 1334 keeptBlock->used = sdest; 1325 1335 } 1326 1336 si += vlen; … … 1349 1359 blk = orBlockPtr( serN ); // Reacquire. 1350 1360 send = blk->used; 1361 keeptBlock = orBlockPtr( keeptBlkIndex ); 1362 keept = keeptBlock->values; 1363 1351 1364 if( !orIfTrue(orRESULT)){ 1352 1365 memCpy( keept + sdest, blk->values + si, (blk->used - si) * sizeof(OValue) ); 1353 1366 sdest += blk->used - si; 1367 keeptBlock->used = sdest; 1354 1368 } 1355 1369 } … … 1359 1373 orRESULT->series.it = sorig; 1360 1374 memCpy( blk->values + sorig, keept, sdest * sizeof(OValue)); 1361 free(keept);1375 orRefPop( 1 ); //free(keept); 1362 1376 } 1363 1377 break;
