1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
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);
|