summaryrefslogtreecommitdiffstats
path: root/apc-svn.patch
blob: 3cb72bad8a83fb72745bec26b8c11fb5bcc87f30 (plain)
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
Revision: http://svn.php.net/viewvc?view=revision&revision=325482
- Fix bug #59829 APC should not try to canonicalize file URLs

Revision: http://svn.php.net/viewvc?view=revision&revision=325483
- Fix bug #61799 Typo in 'SEARCH' regex of apc.php      

Revision: http://svn.php.net/viewvc?view=revision&revision=325875
- Fixed possible memory leak in apc_inc() and apc_dec()

Revision: http://svn.php.net/viewvc?view=revision&revision=325977
- Fix bug 62230 apc_copy_internal_strings does not copy terminating \0 of class entry

Revision: http://svn.php.net/viewvc?view=revision&revision=326089
- Make sure interned strings are null-terminated (cschneid)

--- pecl/apc/trunk/apc_cache.c	2012/04/30 21:13:32	325481
+++ pecl/apc/trunk/apc_cache.c	2012/05/01 00:09:36	325482
@@ -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);
--- pecl/apc/trunk/apc.php	2012/05/01 00:09:36	325482
+++ pecl/apc/trunk/apc.php	2012/05/01 00:34:04	325483
@@ -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
--- pecl/apc/trunk/php_apc.c	2012/05/27 16:15:36	325874
+++ pecl/apc/trunk/php_apc.c	2012/05/27 17:15:26	325875
@@ -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;
 
--- pecl/apc/trunk/apc_string.c	2012/06/05 04:25:50	325976
+++ pecl/apc/trunk/apc_string.c	2012/06/05 05:34:21	325977
@@ -154,7 +154,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 +166,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;
--- pecl/apc/trunk/apc_string.c	2012/06/05 05:34:21	325977
+++ pecl/apc/trunk/apc_string.c	2012/06/11 04:29:57	326089
@@ -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;