summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2002-09-23 17:20:59 +0000
committerAndi Gutmans <andi@php.net>2002-09-23 17:20:59 +0000
commit8831b9cfd02d34c6753a3896498f7d3a17bf2159 (patch)
treea1fe37f2f667cca5e0a7c07034f53d7ff0ba1a1e /Zend
parent1f18eaadee6e85ce85bb7841d7039100eae96236 (diff)
downloadphp-git-8831b9cfd02d34c6753a3896498f7d3a17bf2159.tar.gz
- MFZE1.
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_globals.h2
-rw-r--r--Zend/zend_ini.c29
-rw-r--r--Zend/zend_language_parser.y22
3 files changed, 33 insertions, 20 deletions
diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h
index 711c2520bc..6711c80342 100644
--- a/Zend/zend_globals.h
+++ b/Zend/zend_globals.h
@@ -202,7 +202,7 @@ struct _zend_executor_globals {
int lambda_count;
- HashTable ini_directives;
+ HashTable *ini_directives;
zend_objects_store objects_store;
zval *exception;
diff --git a/Zend/zend_ini.c b/Zend/zend_ini.c
index 3156462382..19a3453daf 100644
--- a/Zend/zend_ini.c
+++ b/Zend/zend_ini.c
@@ -62,7 +62,9 @@ static int zend_restore_ini_entry_cb(zend_ini_entry *ini_entry, int stage TSRMLS
*/
ZEND_API int zend_ini_startup(TSRMLS_D)
{
- registered_zend_ini_directives = &EG(ini_directives);
+ registered_zend_ini_directives = (HashTable *) malloc(sizeof(HashTable));
+
+ EG(ini_directives) = registered_zend_ini_directives;
if (zend_hash_init_ex(registered_zend_ini_directives, 100, NULL, NULL, 1, 0)==FAILURE) {
return FAILURE;
}
@@ -72,29 +74,32 @@ ZEND_API int zend_ini_startup(TSRMLS_D)
ZEND_API int zend_ini_shutdown(TSRMLS_D)
{
- zend_hash_destroy(&EG(ini_directives));
+ zend_hash_destroy(EG(ini_directives));
return SUCCESS;
}
ZEND_API int zend_ini_deactivate(TSRMLS_D)
{
- zend_hash_apply_with_argument(&EG(ini_directives), (apply_func_arg_t) zend_restore_ini_entry_cb, (void *) ZEND_INI_STAGE_DEACTIVATE TSRMLS_CC);
+ zend_hash_apply_with_argument(EG(ini_directives), (apply_func_arg_t) zend_restore_ini_entry_cb, (void *) ZEND_INI_STAGE_DEACTIVATE TSRMLS_CC);
return SUCCESS;
}
+#ifdef ZTS
ZEND_API int zend_copy_ini_directives(TSRMLS_D)
{
zend_ini_entry ini_entry;
- if (zend_hash_init_ex(&EG(ini_directives), registered_zend_ini_directives->nNumOfElements, NULL, NULL, 1, 0)==FAILURE) {
+ EG(ini_directives) = (HashTable *) malloc(sizeof(HashTable));
+ if (zend_hash_init_ex(EG(ini_directives), registered_zend_ini_directives->nNumOfElements, NULL, NULL, 1, 0)==FAILURE) {
return FAILURE;
}
- zend_hash_copy(&EG(ini_directives), registered_zend_ini_directives, NULL, &ini_entry, sizeof(zend_ini_entry));
+ zend_hash_copy(EG(ini_directives), registered_zend_ini_directives, NULL, &ini_entry, sizeof(zend_ini_entry));
zend_ini_refresh_caches(ZEND_INI_STAGE_STARTUP TSRMLS_CC);
return SUCCESS;
}
+#endif
static int ini_key_compare(const void *a, const void *b TSRMLS_DC)
@@ -119,7 +124,7 @@ static int ini_key_compare(const void *a, const void *b TSRMLS_DC)
ZEND_API void zend_ini_sort_entries(TSRMLS_D)
{
- zend_hash_sort(&EG(ini_directives), zend_qsort, ini_key_compare, 0 TSRMLS_CC);
+ zend_hash_sort(EG(ini_directives), zend_qsort, ini_key_compare, 0 TSRMLS_CC);
}
/*
@@ -172,7 +177,7 @@ static int zend_ini_refresh_cache(zend_ini_entry *p, int stage TSRMLS_DC)
ZEND_API void zend_ini_refresh_caches(int stage TSRMLS_DC)
{
- zend_hash_apply_with_argument(&EG(ini_directives), (apply_func_arg_t) zend_ini_refresh_cache, (void *)(long) stage TSRMLS_CC);
+ zend_hash_apply_with_argument(EG(ini_directives), (apply_func_arg_t) zend_ini_refresh_cache, (void *)(long) stage TSRMLS_CC);
}
@@ -182,7 +187,7 @@ ZEND_API int zend_alter_ini_entry(char *name, uint name_length, char *new_value,
char *duplicate;
TSRMLS_FETCH();
- if (zend_hash_find(&EG(ini_directives), name, name_length, (void **) &ini_entry)==FAILURE) {
+ if (zend_hash_find(EG(ini_directives), name, name_length, (void **) &ini_entry)==FAILURE) {
return FAILURE;
}
@@ -216,7 +221,7 @@ ZEND_API int zend_restore_ini_entry(char *name, uint name_length, int stage)
zend_ini_entry *ini_entry;
TSRMLS_FETCH();
- if (zend_hash_find(&EG(ini_directives), name, name_length, (void **) &ini_entry)==FAILURE) {
+ if (zend_hash_find(EG(ini_directives), name, name_length, (void **) &ini_entry)==FAILURE) {
return FAILURE;
}
@@ -248,7 +253,7 @@ ZEND_API long zend_ini_long(char *name, uint name_length, int orig)
zend_ini_entry *ini_entry;
TSRMLS_FETCH();
- if (zend_hash_find(&EG(ini_directives), name, name_length, (void **) &ini_entry)==SUCCESS) {
+ if (zend_hash_find(EG(ini_directives), name, name_length, (void **) &ini_entry)==SUCCESS) {
if (orig && ini_entry->modified) {
return (ini_entry->orig_value ? strtol(ini_entry->orig_value, NULL, 0) : 0);
} else if (ini_entry->value) {
@@ -265,7 +270,7 @@ ZEND_API double zend_ini_double(char *name, uint name_length, int orig)
zend_ini_entry *ini_entry;
TSRMLS_FETCH();
- if (zend_hash_find(&EG(ini_directives), name, name_length, (void **) &ini_entry)==SUCCESS) {
+ if (zend_hash_find(EG(ini_directives), name, name_length, (void **) &ini_entry)==SUCCESS) {
if (orig && ini_entry->modified) {
return (double) (ini_entry->orig_value ? strtod(ini_entry->orig_value, NULL) : 0.0);
} else if (ini_entry->value) {
@@ -282,7 +287,7 @@ ZEND_API char *zend_ini_string(char *name, uint name_length, int orig)
zend_ini_entry *ini_entry;
TSRMLS_FETCH();
- if (zend_hash_find(&EG(ini_directives), name, name_length, (void **) &ini_entry)==SUCCESS) {
+ if (zend_hash_find(EG(ini_directives), name, name_length, (void **) &ini_entry)==SUCCESS) {
if (orig && ini_entry->modified) {
return ini_entry->orig_value;
} else {
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 099e6f45d3..fb7f2f09cc 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -155,7 +155,8 @@ top_statement_list:
top_statement:
statement
- | declaration_statement { zend_do_early_binding(TSRMLS_C); }
+ | function_declaration_statement { zend_do_early_binding(TSRMLS_C); }
+ | class_declaration_statement
;
@@ -167,7 +168,8 @@ inner_statement_list:
inner_statement:
statement
- | declaration_statement
+ | function_declaration_statement
+ | class_declaration_statement
;
@@ -262,17 +264,24 @@ use_filename:
;
-declaration_statement:
- unticked_declaration_statement { zend_do_ticks(TSRMLS_C); }
+function_declaration_statement:
+ unticked_function_declaration_statement { zend_do_ticks(TSRMLS_C); }
+;
+
+class_declaration_statement:
+ unticked_class_declaration_statement { zend_do_ticks(TSRMLS_C); }
;
-unticked_declaration_statement:
+unticked_function_declaration_statement:
T_FUNCTION { $1.u.opline_num = CG(zend_lineno); } is_reference T_STRING { zend_do_begin_function_declaration(&$1, &$4, 0, $3.op_type TSRMLS_CC); }
'(' parameter_list ')' '{' inner_statement_list '}' { zend_do_end_function_declaration(&$1 TSRMLS_CC); }
| T_OLD_FUNCTION { $1.u.opline_num = CG(zend_lineno); } is_reference T_STRING { zend_do_begin_function_declaration(&$1, &$4, 0, $3.op_type TSRMLS_CC); }
parameter_list '(' inner_statement_list ')' ';' { zend_do_end_function_declaration(&$1 TSRMLS_CC); }
- | T_CLASS declaration_class_name extends_from { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); } '{' class_statement_list '}' { zend_do_end_class_declaration(&$1 TSRMLS_CC); }
+;
+
+unticked_class_declaration_statement:
+ T_CLASS declaration_class_name extends_from { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); } '{' class_statement_list '}' { zend_do_end_class_declaration(&$1 TSRMLS_CC); }
;
extends_from:
@@ -290,7 +299,6 @@ foreach_optional_arg:
| T_DOUBLE_ARROW w_variable { $$ = $2; }
;
-
for_statement:
statement
| ':' inner_statement_list T_ENDFOR ';'