Changeset 400
- Timestamp:
- 05/29/2007 10:03:54 AM (16 months ago)
- Files:
-
- 1 modified
-
trunk/xcache.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/xcache.c
r399 r400 88 88 static zend_bool xc_initized = 0; 89 89 static zend_compile_file_t *origin_compile_file; 90 static zend_llist_element *xc_llist_zend_extension; 90 91 91 92 static zend_bool xc_test = 0; … … 2622 2623 } 2623 2624 2625 static zend_llist_element *xc_llist_get_element_by_zend_extension(zend_llist *l, const char *extension_name) 2626 { 2627 zend_llist_element *element; 2628 2629 for (element = zend_extensions.head; element; element = element->next) { 2630 zend_extension *extension = (zend_extension *) element->data; 2631 2632 if (!strcmp(extension->name, extension_name)) { 2633 return element; 2634 } 2635 } 2636 return NULL; 2637 } 2638 2639 static void xc_llist_prepend(zend_llist *l, zend_llist_element *element) 2640 { 2641 element->next = l->head; 2642 element->prev = NULL; 2643 if (l->head) { 2644 l->head->prev = element; 2645 } 2646 else { 2647 l->tail = element; 2648 } 2649 l->head = element; 2650 ++l->count; 2651 } 2652 2653 static void xc_llist_unlink(zend_llist *l, zend_llist_element *element) 2654 { 2655 if ((element)->prev) { 2656 (element)->prev->next = (element)->next; 2657 } 2658 else { 2659 (l)->head = (element)->next; 2660 } 2661 2662 if ((element)->next) { 2663 (element)->next->prev = (element)->prev; 2664 } 2665 else { 2666 (l)->tail = (element)->prev; 2667 } 2668 2669 --l->count; 2670 } 2671 2624 2672 static int xc_zend_extension_startup(zend_extension *extension) 2625 2673 { … … 2868 2916 /* }}} */ 2869 2917 static startup_func_t xc_last_ext_startup; 2870 static zend_llist_element *xc_llist_element;2871 2918 static int xc_zend_startup_last(zend_extension *extension) /* {{{ */ 2872 2919 { … … 2878 2925 } 2879 2926 } 2880 xc_zend_extension_register(&zend_extension_entry, 0); 2927 assert(xc_llist_zend_extension); 2928 xc_llist_prepend(&zend_extensions, xc_llist_zend_extension); 2881 2929 if (!xc_module_gotup) { 2882 2930 return zend_startup_module(&xcache_module_entry); … … 2888 2936 { 2889 2937 xc_zend_extension_gotup = 1; 2890 xc_llist_element = NULL;2891 2938 if (zend_llist_count(&zend_extensions) > 1) { 2892 2939 zend_llist_position lpos; 2893 2940 zend_extension *ext; 2894 2941 2895 ext = zend_get_extension(XCACHE_NAME);2896 xc_ zend_remove_extension(ext);2942 xc_llist_zend_extension = xc_llist_get_element_by_zend_extension(&zend_extensions, XCACHE_NAME); 2943 xc_llist_unlink(&zend_extensions, xc_llist_zend_extension); 2897 2944 2898 2945 ext = (zend_extension *) zend_llist_get_last_ex(&zend_extensions, &lpos); 2899 assert(ext );2946 assert(ext && ext != xc_llist_zend_extension); 2900 2947 xc_last_ext_startup = ext->startup; 2901 2948 ext->startup = xc_zend_startup_last;

