Changeset 516 for trunk/xcache.c


Ignore:
Timestamp:
2008-01-09T04:55:57+01:00 (6 years ago)
Author:
moo
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.