Changeset 1217
- Timestamp:
- 12/20/2012 01:40:04 PM (5 months ago)
- Files:
-
- 1 modified
-
trunk/mod_cacher/xc_cacher.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/mod_cacher/xc_cacher.c
r1204 r1217 2560 2560 } 2561 2561 2562 static inline zend_bool xc_var_has_prefix( xc_entry_t *entry, zval *prefixTSRMLS_DC) /* {{{ */2562 static inline zend_bool xc_var_has_prefix(const xc_entry_t *entry, zval *prefix, const xc_namebuffer_t *prefix_buffer TSRMLS_DC) /* {{{ */ 2563 2563 { 2564 2564 zend_bool result = 0; 2565 VAR_BUFFER_FLAGS(prefix);2566 2565 2567 2566 if (UNISW(IS_STRING, entry->name_type) != prefix->type) { 2568 2567 return 0; 2569 2568 } 2570 VAR_BUFFER_INIT(prefix);2571 2569 2572 2570 #ifdef IS_UNICODE 2573 2571 if (Z_TYPE(prefix) == IS_UNICODE) { 2574 result = entry->name.ustr.len >= prefix_buffer.len 2575 && memcmp(entry->name.ustr.val, prefix_buffer.buffer, prefix_buffer.len * sizeof(Z_USTRVAL_P(prefix)[0])) == 0; 2576 goto finish; 2577 } 2578 #endif 2579 2580 result = entry->name.str.len >= prefix_buffer.len 2581 && memcmp(entry->name.str.val, prefix_buffer.buffer, prefix_buffer.len) == 0; 2582 goto finish; 2583 2584 finish: 2585 VAR_BUFFER_FREE(prefix); 2586 return result; 2572 return result = entry->name.ustr.len >= prefix_buffer->len 2573 && memcmp(entry->name.ustr.val, prefix_buffer->buffer, prefix_buffer->len * sizeof(Z_USTRVAL_P(prefix)[0])) == 0; 2574 } 2575 #endif 2576 2577 return result = entry->name.str.len >= prefix_buffer->len 2578 && memcmp(entry->name.str.val, prefix_buffer->buffer, prefix_buffer->len) == 0; 2587 2579 } 2588 2580 /* }}} */ … … 3320 3312 zval *prefix; 3321 3313 int i, iend; 3314 VAR_BUFFER_FLAGS(prefix); 3322 3315 3323 3316 if (!xc_var_caches) { … … 3330 3323 } 3331 3324 3325 VAR_BUFFER_INIT(prefix); 3332 3326 for (i = 0, iend = xc_var_hcache.size; i < iend; i ++) { 3333 3327 xc_cache_t *cache = &xc_var_caches[i]; … … 3342 3336 for (entry = cache->cached->entries[entryslotid]; entry; entry = next) { 3343 3337 next = entry->next; 3344 if (xc_var_has_prefix(entry, prefix TSRMLS_CC)) {3338 if (xc_var_has_prefix(entry, prefix, &prefix_buffer TSRMLS_CC)) { 3345 3339 xc_entry_remove_unlocked(XC_TYPE_VAR, cache, entryslotid, entry TSRMLS_CC); 3346 3340 } … … 3349 3343 } LEAVE_LOCK(cache); 3350 3344 } 3345 VAR_BUFFER_FREE(prefix); 3351 3346 } 3352 3347 /* }}} */

