Changeset 468 for trunk/thune/urlan.c

Show
Ignore:
Timestamp:
09/03/07 02:29:05 (15 months ago)
Author:
krobillard
Message:

Squashed commit of master.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/thune/urlan.c

    r458 r468  
    445445 
    446446 
    447 int ur_sizeofUrlanEnv() 
    448 { 
    449     return sizeof(UrlanEnv); 
    450 } 
    451  
    452  
    453447UThread* ur_thread( UrlanEnv* env ) 
    454448{ 
     
    458452 
    459453/** 
    460   Initialize UrlanEnv. 
     454  Create and initialize UrlanEnv. 
    461455 
    462456  \param custom       Pointer to array of cutsom datatypes. 
     
    464458  \param customCount  Number of UDatatype in custom array. 
    465459 
    466   \return  UR_EVAL_ code. 
    467 */ 
    468 int ur_startup( UrlanEnv* env, UDatatype* custom, int customCount ) 
    469 { 
     460  \return pointer to script environment. 
     461*/ 
     462UrlanEnv* ur_makeEnv( UDatatype* custom, int customCount ) 
     463{ 
     464    UrlanEnv* env; 
    470465    UThread* ut; 
    471466    int n; 
     
    474469    _validateEnv(); 
    475470#endif 
     471 
     472    env = memAlloc( sizeof(UrlanEnv) ); 
     473    if( ! env ) 
     474        return 0; 
    476475 
    477476    env->threads  = 0; 
     
    505504        perror( "mutexInit" ); 
    506505#endif 
    507         return UR_EVAL_ERROR; 
     506        return 0; 
    508507    } 
    509508 
     
    535534    n = ur_tokenize( ut, _bootScript, _bootScript + sizeof(_bootScript) ); 
    536535    if( ! n ) 
    537         return UR_EVAL_ERROR; 
     536    { 
     537        ur_freeEnv( env ); 
     538        return 0; 
     539    } 
    538540    ur_bind( n, (UCell*) &ur_thrGlobal ); 
    539541    n = ur_eval( ut, n, 0 ); 
    540542    if( n != UR_EVAL_OK ) 
    541         return n; 
     543    { 
     544        ur_freeEnv( env ); 
     545        return 0; 
     546    } 
    542547#endif 
    543548    n = ur_evalCStr( ut, _envScript, sizeof(_envScript) ); 
     
    573578    ur_installExceptionHandlers(); 
    574579 
    575     return n; 
     580    return env; 
    576581} 
    577582 
     
    630635  before a second thread is created. 
    631636*/ 
    632 void ur_freezeEnv( UThread* ut, int binCount, int blkCount ) 
    633 { 
    634     UrlanEnv* env = ut->env; 
     637void ur_freezeEnv( UrlanEnv* env, int binCount, int blkCount ) 
     638{ 
     639    UThread* ut = env->threads; 
    635640 
    636641    assert( env->bin.arr.ptr.v == 0 ); 
     
    727732  Release all resources used by env. 
    728733*/ 
    729 void ur_shutdown( UrlanEnv* env ) 
     734void ur_freeEnv( UrlanEnv* env ) 
    730735{ 
    731736    UThread* thr; 
    732737    UThread* next; 
     738 
     739    if( ! env ) 
     740        return; 
     741 
    733742    if( (thr = env->threads) ) 
    734743    { 
     
    753762    ur_arrayFree( &env->atoms ); 
    754763    ur_arrayFree( &env->atomNames ); 
     764 
     765    memFree( env ); 
    755766} 
    756767