summaryrefslogtreecommitdiffstats
path: root/apc-svn.patch
blob: d2e429949f299a96cdeafa1d5f987e6e17628712 (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
--- pecl/apc/trunk/apc_string.c	2012/08/22 14:36:28	327232
+++ pecl/apc/trunk/apc_string.c	2012/08/22 14:54:39	327233
@@ -206,48 +206,52 @@
     int count = APCG(shm_strings_buffer) / (sizeof(Bucket) + sizeof(Bucket*) * 2);
 
     apc_interned_strings_data = (apc_interned_strings_data_t*) apc_sma_malloc(APCG(shm_strings_buffer) TSRMLS_CC);
-    memset((void *)apc_interned_strings_data, 0, APCG(shm_strings_buffer));
+    if (apc_interned_strings_data) {
+        memset((void *)apc_interned_strings_data, 0, APCG(shm_strings_buffer));
 
-    CREATE_LOCK(APCSG(lock));
+        CREATE_LOCK(APCSG(lock));
 
-    zend_hash_init(&APCSG(interned_strings), count, NULL, NULL, 1);
-    APCSG(interned_strings).nTableMask = APCSG(interned_strings).nTableSize - 1;
-    APCSG(interned_strings).arBuckets = (Bucket**)((char*)apc_interned_strings_data + sizeof(apc_interned_strings_data_t));
-   
-    APCSG(interned_strings_start) = (char*)APCSG(interned_strings).arBuckets + APCSG(interned_strings).nTableSize * sizeof(Bucket *);
-    APCSG(interned_strings_end)   = (char*)apc_interned_strings_data + APCG(shm_strings_buffer);
-    APCSG(interned_strings_top)   = APCSG(interned_strings_start);
-
-    old_interned_strings_start = CG(interned_strings_start);
-    old_interned_strings_end = CG(interned_strings_end);
-    old_new_interned_string = zend_new_interned_string;
-    old_interned_strings_snapshot = zend_interned_strings_snapshot;
-    old_interned_strings_restore = zend_interned_strings_restore;
-
-    CG(interned_strings_start) = APCSG(interned_strings_start);
-    CG(interned_strings_end) = APCSG(interned_strings_end);
-    zend_new_interned_string = apc_dummy_new_interned_string_for_php;
-    zend_interned_strings_snapshot = apc_dummy_interned_strings_snapshot_for_php;
-    zend_interned_strings_restore = apc_dummy_interned_strings_restore_for_php;
+        zend_hash_init(&APCSG(interned_strings), count, NULL, NULL, 1);
+        APCSG(interned_strings).nTableMask = APCSG(interned_strings).nTableSize - 1;
+        APCSG(interned_strings).arBuckets = (Bucket**)((char*)apc_interned_strings_data + sizeof(apc_interned_strings_data_t));
+
+        APCSG(interned_strings_start) = (char*)APCSG(interned_strings).arBuckets + APCSG(interned_strings).nTableSize * sizeof(Bucket *);
+        APCSG(interned_strings_end)   = (char*)apc_interned_strings_data + APCG(shm_strings_buffer);
+        APCSG(interned_strings_top)   = APCSG(interned_strings_start);
+
+        old_interned_strings_start = CG(interned_strings_start);
+        old_interned_strings_end = CG(interned_strings_end);
+        old_new_interned_string = zend_new_interned_string;
+        old_interned_strings_snapshot = zend_interned_strings_snapshot;
+        old_interned_strings_restore = zend_interned_strings_restore;
+
+        CG(interned_strings_start) = APCSG(interned_strings_start);
+        CG(interned_strings_end) = APCSG(interned_strings_end);
+        zend_new_interned_string = apc_dummy_new_interned_string_for_php;
+        zend_interned_strings_snapshot = apc_dummy_interned_strings_snapshot_for_php;
+        zend_interned_strings_restore = apc_dummy_interned_strings_restore_for_php;
 
-    apc_copy_internal_strings(TSRMLS_C);
+        apc_copy_internal_strings(TSRMLS_C);
+    }
 }
 
 void apc_interned_strings_shutdown(TSRMLS_D)
 {	
-    zend_hash_clean(CG(function_table));
-    zend_hash_clean(CG(class_table));
-    zend_hash_clean(EG(zend_constants));
-
-    CG(interned_strings_start) = old_interned_strings_start;
-    CG(interned_strings_end) = old_interned_strings_end;
-    zend_new_interned_string = old_new_interned_string;
-    zend_interned_strings_snapshot = old_interned_strings_snapshot;
-    zend_interned_strings_restore = old_interned_strings_restore;
+    if (apc_interned_strings_data) {
+        zend_hash_clean(CG(function_table));
+        zend_hash_clean(CG(class_table));
+        zend_hash_clean(EG(zend_constants));
+
+        CG(interned_strings_start) = old_interned_strings_start;
+        CG(interned_strings_end) = old_interned_strings_end;
+        zend_new_interned_string = old_new_interned_string;
+        zend_interned_strings_snapshot = old_interned_strings_snapshot;
+        zend_interned_strings_restore = old_interned_strings_restore;
 
-    apc_sma_free(apc_interned_strings_data TSRMLS_CC);
+        apc_sma_free(apc_interned_strings_data TSRMLS_CC);
 
-    DESTROY_LOCK(APCSG(lock));
+        DESTROY_LOCK(APCSG(lock));
+    }
 }
 #endif
 
--- pecl/apc/trunk/apc_string.c	2012/08/23 07:39:44	327243
+++ pecl/apc/trunk/apc_string.c	2012/08/23 09:08:12	327244
@@ -248,8 +248,6 @@
         zend_interned_strings_snapshot = old_interned_strings_snapshot;
         zend_interned_strings_restore = old_interned_strings_restore;
 
-        apc_sma_free(apc_interned_strings_data TSRMLS_CC);
-
         DESTROY_LOCK(APCSG(lock));
     }
 }