From c4b5d9e572c84c91ff075ea19af2872bb850732c Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 26 Jul 2007 08:32:52 +0000 Subject: [PATCH] Disabling declaration of class which name conflicts with import. --- Zend/tests/ns_022.inc | 6 ++++++ Zend/tests/ns_022.phpt | 10 +++------- Zend/tests/ns_025.phpt | 24 ++++++++++++++++++++++++ Zend/tests/ns_026.phpt | 30 ++++++++++++++++++++++++++++++ Zend/tests/ns_027.inc | 11 +++++++++++ Zend/tests/ns_027.phpt | 24 ++++++++++++++++++++++++ Zend/tests/ns_028.inc | 15 +++++++++++++++ Zend/tests/ns_028.phpt | 26 ++++++++++++++++++++++++++ Zend/tests/ns_029.phpt | 12 ++++++++++++ Zend/tests/ns_030.phpt | 12 ++++++++++++ Zend/zend_compile.c | 9 +++++++++ 11 files changed, 172 insertions(+), 7 deletions(-) create mode 100755 Zend/tests/ns_022.inc create mode 100755 Zend/tests/ns_025.phpt create mode 100755 Zend/tests/ns_026.phpt create mode 100755 Zend/tests/ns_027.inc create mode 100755 Zend/tests/ns_027.phpt create mode 100755 Zend/tests/ns_028.inc create mode 100755 Zend/tests/ns_028.phpt create mode 100755 Zend/tests/ns_029.phpt create mode 100755 Zend/tests/ns_030.phpt diff --git a/Zend/tests/ns_022.inc b/Zend/tests/ns_022.inc new file mode 100755 index 00000000000..be571fc346b --- /dev/null +++ b/Zend/tests/ns_022.inc @@ -0,0 +1,6 @@ +u.constant), Z_UNIVAL(class_name->u.constant)); } + if (CG(current_import) && + zend_u_hash_exists(CG(current_import), Z_TYPE(class_name->u.constant), lcname, lcname_len+1)) { + zend_error(E_COMPILE_ERROR, "Class name '%R' coflicts with import name", Z_TYPE(class_name->u.constant), Z_UNIVAL(class_name->u.constant)); + } + if (CG(current_namespace)) { znode tmp; @@ -4945,6 +4950,10 @@ void zend_do_import(znode *ns_name, znode *new_name TSRMLS_DC) /* {{{ */ zend_error(E_COMPILE_ERROR, "Cannot use '%R' as import name", Z_TYPE_P(name), Z_UNIVAL_P(name)); } + if (zend_u_hash_exists(CG(class_table), Z_TYPE_P(name), lcname, lcname_len+1)) { + zend_error(E_COMPILE_ERROR, "Import name '%R' coflicts with defined class", Z_TYPE_P(name), Z_UNIVAL_P(name)); + } + if (zend_u_hash_add(CG(current_import), Z_TYPE_P(name), lcname, lcname_len+1, &ns, sizeof(zval*), NULL) != SUCCESS) { zend_error(E_COMPILE_ERROR, "Cannot reuse import name"); }