Index: apc_string.c =================================================================== --- apc_string.c (Revision 325040) +++ apc_string.c (Revision 326091) @@ -91,17 +91,18 @@ p = p->pNext; } - if (APCSG(interned_strings_top) + ZEND_MM_ALIGNED_SIZE(sizeof(Bucket) + nKeyLength) >= + if (APCSG(interned_strings_top) + ZEND_MM_ALIGNED_SIZE(sizeof(Bucket) + nKeyLength + 1) >= APCSG(interned_strings_end)) { /* no memory */ return NULL; } p = (Bucket *) APCSG(interned_strings_top); - APCSG(interned_strings_top) += ZEND_MM_ALIGNED_SIZE(sizeof(Bucket) + nKeyLength); + APCSG(interned_strings_top) += ZEND_MM_ALIGNED_SIZE(sizeof(Bucket) + nKeyLength + 1); p->arKey = (char*)(p+1); memcpy(p->arKey, arKey, nKeyLength); + ((char *)p->arKey)[nKeyLength] = '\0'; p->nKeyLength = nKeyLength; p->h = h; p->pData = &p->pDataPtr; @@ -154,7 +155,7 @@ } if (ce->name) { - ce->name = apc_new_interned_string(ce->name, ce->name_length TSRMLS_CC); + ce->name = apc_new_interned_string(ce->name, ce->name_length+1 TSRMLS_CC); } q = ce->properties_info.pListHead; @@ -166,7 +167,7 @@ } if (info->name) { - info->name = apc_new_interned_string(info->name, info->name_length TSRMLS_CC); + info->name = apc_new_interned_string(info->name, info->name_length+1 TSRMLS_CC); } q = q->pListNext; Index: apc.php =================================================================== --- apc.php (Revision 325040) +++ apc.php (Revision 326091) @@ -91,7 +91,7 @@ 'SORT1' => '/^[AHSMCDTZ]$/', // first sort key 'SORT2' => '/^[DA]$/', // second sort key 'AGGR' => '/^\d+$/', // aggregation by dir level - 'SEARCH' => '~^[a-zA-Z0-1/_.-]*$~' // aggregation by dir level + 'SEARCH' => '~^[a-zA-Z0-9/_.-]*$~' // aggregation by dir level ); // default cache mode Index: php_apc.c =================================================================== --- php_apc.c (Revision 325040) +++ php_apc.c (Revision 326091) @@ -724,6 +724,10 @@ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz", &strkey, &strkey_len, &(args.step), &success) == FAILURE) { return; } + + if (success) { + zval_dtor(success); + } if(_apc_update(strkey, strkey_len, inc_updater, &args TSRMLS_CC)) { if(success) ZVAL_TRUE(success); @@ -747,6 +751,10 @@ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz", &strkey, &strkey_len, &(args.step), &success) == FAILURE) { return; } + + if (success) { + zval_dtor(success); + } args.step = args.step * -1; Index: php_apc.h =================================================================== --- php_apc.h (Revision 325040) +++ php_apc.h (Revision 326091) @@ -35,7 +35,7 @@ #include "apc_php.h" #include "apc_globals.h" -#define PHP_APC_VERSION "3.1.9" +#define PHP_APC_VERSION "3.1.10" extern zend_module_entry apc_module_entry; #define apc_module_ptr &apc_module_entry Index: apc_cache.c =================================================================== --- apc_cache.c (Revision 325040) +++ apc_cache.c (Revision 326091) @@ -944,7 +944,7 @@ len = strlen(filename); if(APCG(fpstat)==0) { - if(IS_ABSOLUTE_PATH(filename,len)) { + if(IS_ABSOLUTE_PATH(filename,len) || strstr(filename, "://")) { key->data.fpfile.fullpath = filename; key->data.fpfile.fullpath_len = len; key->h = string_nhash_8(key->data.fpfile.fullpath, key->data.fpfile.fullpath_len);