Changeset 516 in svn


Ignore:
Timestamp:
2008-01-09T04:55:57+01:00 (7 years ago)
Author:
Xuefer
Message:

fixed #138: no segv if cache is not initialized correctly

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/xcache.c

    r508 r516  
    377377    int i, c;
    378378
    379     if (!xc_php_ttl || !xc_php_gc_interval) {
     379    if (!xc_php_ttl || !xc_php_gc_interval || !xc_php_caches) {
    380380        return;
    381381    }
     
    390390    int i, c;
    391391
    392     if (!xc_var_gc_interval) {
     392    if (!xc_var_gc_interval || !xc_var_caches) {
    393393        return;
    394394    }
     
    438438    int i, c;
    439439
    440     for (i = 0, c = xc_php_hcache.size; i < c; i ++) {
    441         xc_gc_deletes_one(xc_php_caches[i] TSRMLS_CC);
    442     }
    443 
    444     for (i = 0, c = xc_var_hcache.size; i < c; i ++) {
    445         xc_gc_deletes_one(xc_var_caches[i] TSRMLS_CC);
     440    if (xc_php_caches) {
     441        for (i = 0, c = xc_php_hcache.size; i < c; i ++) {
     442            xc_gc_deletes_one(xc_php_caches[i] TSRMLS_CC);
     443        }
     444    }
     445
     446    if (xc_var_caches) {
     447        for (i = 0, c = xc_var_hcache.size; i < c; i ++) {
     448            xc_gc_deletes_one(xc_var_caches[i] TSRMLS_CC);
     449        }
    446450    }
    447451}
     
    715719static void xc_entry_unholds(TSRMLS_D) /* {{{ */
    716720{
    717     xc_entry_unholds_real(XG(php_holds), xc_php_caches, xc_php_hcache.size TSRMLS_CC);
    718     xc_entry_unholds_real(XG(var_holds), xc_var_caches, xc_var_hcache.size TSRMLS_CC);
     721    if (xc_php_caches) {
     722        xc_entry_unholds_real(XG(php_holds), xc_php_caches, xc_php_hcache.size TSRMLS_CC);
     723    }
     724
     725    if (xc_var_caches) {
     726        xc_entry_unholds_real(XG(var_holds), xc_var_caches, xc_var_hcache.size TSRMLS_CC);
     727    }
    719728}
    720729/* }}} */
     
    14361445    xc_shm_t *shm;
    14371446    int i;
    1438     if (!xc_initized) {
    1439         return 0;
    1440     }
    1441     for (i = 0; i < xc_php_hcache.size; i ++) {
    1442         shm = xc_php_caches[i]->shm;
    1443         if (shm->handlers->is_readwrite(shm, p)) {
    1444             return 1;
    1445         }
    1446     }
    1447     for (i = 0; i < xc_var_hcache.size; i ++) {
    1448         shm = xc_var_caches[i]->shm;
    1449         if (shm->handlers->is_readwrite(shm, p)) {
    1450             return 1;
     1447
     1448    if (xc_php_caches) {
     1449        for (i = 0; i < xc_php_hcache.size; i ++) {
     1450            shm = xc_php_caches[i]->shm;
     1451            if (shm->handlers->is_readwrite(shm, p)) {
     1452                return 1;
     1453            }
     1454        }
     1455    }
     1456
     1457    if (xc_var_caches) {
     1458        for (i = 0; i < xc_var_hcache.size; i ++) {
     1459            shm = xc_var_caches[i]->shm;
     1460            if (shm->handlers->is_readwrite(shm, p)) {
     1461                return 1;
     1462            }
    14511463        }
    14521464    }
     
    14581470    xc_shm_t *shm;
    14591471    int i;
    1460     if (!xc_initized) {
    1461         return 0;
    1462     }
    1463     for (i = 0; i < xc_php_hcache.size; i ++) {
    1464         shm = xc_php_caches[i]->shm;
    1465         if (shm->handlers->is_readonly(shm, p)) {
    1466             return 1;
    1467         }
    1468     }
    1469     for (i = 0; i < xc_var_hcache.size; i ++) {
    1470         shm = xc_var_caches[i]->shm;
    1471         if (shm->handlers->is_readonly(shm, p)) {
    1472             return 1;
     1472
     1473    if (xc_php_caches) {
     1474        for (i = 0; i < xc_php_hcache.size; i ++) {
     1475            shm = xc_php_caches[i]->shm;
     1476            if (shm->handlers->is_readonly(shm, p)) {
     1477                return 1;
     1478            }
     1479        }
     1480    }
     1481
     1482    if (xc_var_caches) {
     1483        for (i = 0; i < xc_var_hcache.size; i ++) {
     1484            shm = xc_var_caches[i]->shm;
     1485            if (shm->handlers->is_readonly(shm, p)) {
     1486                return 1;
     1487            }
    14731488        }
    14741489    }
     
    17341749        XG(internal_table_copied) = 1;
    17351750    }
    1736     if (xc_php_hcache.size && !XG(php_holds)) {
     1751    if (xc_php_caches && !XG(php_holds)) {
    17371752        XG(php_holds) = calloc(xc_php_hcache.size, sizeof(xc_stack_t));
    17381753        for (i = 0; i < xc_php_hcache.size; i ++) {
     
    17411756    }
    17421757
    1743     if (xc_initized && xc_var_hcache.size && !XG(var_holds)) {
     1758    if (xc_var_caches && !XG(var_holds)) {
    17441759        XG(var_holds) = calloc(xc_var_hcache.size, sizeof(xc_stack_t));
    17451760        for (i = 0; i < xc_var_hcache.size; i ++) {
Note: See TracChangeset for help on using the changeset viewer.