예제 #1
0
파일: ejsZlib.c 프로젝트: monmarzia/ejs-2
static int manageZlib(EjsZlib *db, int flags)
{
    if (flags & MPR_MANAGE_MARK) {
        ejsManagePot(db, flags);

    } else if (flags & MPR_MANAGE_FREE) {
        if (db->sdb) {
            zlibClose(db->ejs, db, 0, 0);
        }
    }
    return 0;
}
예제 #2
0
파일: ejsArray.c 프로젝트: leemit/ejscript
static void manageArray(EjsArray *ap, int flags)
{
    EjsObj      *vp, **data;
    int         i, length;

    if (flags & MPR_MANAGE_MARK) {
        length = ap->length;
        data = ap->data;
        for (i = length - 1; i >= 0; i--) {
            if ((vp = data[i]) != 0) {
                mprMark(vp);
            }
        }
        mprMark(data);
        ejsManagePot((EjsPot*) ap, flags);
    }
}
예제 #3
0
파일: ejsWorker.c 프로젝트: soffmodd/ejs-2
static void manageWorker(EjsWorker *worker, int flags)
{
    if (flags & MPR_MANAGE_MARK) {
        ejsManagePot(worker, flags);
        mprMark(worker->name);
        mprMark(worker->ejs);
        mprMark(worker->event);
        mprMark(worker->pair);
        mprMark(worker->scriptFile);
        mprMark(worker->scriptLiteral);

    } else if (flags & MPR_MANAGE_FREE) {
        if (!worker->inside) {
            removeWorker(worker);
        }
        if (worker->pair) {
            if (worker->pair->pair) {
                worker->pair->pair = 0;
            }
            worker->pair = 0;
        }
    }
}