summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
authorGuilherme Blanco <guilhermeblanco@hotmail.com>2015-02-12 23:19:14 +0100
committerNikita Popov <nikic@php.net>2015-02-12 23:20:19 +0100
commit8c81d80e10e0f189307fc8ff4a8fb34bd0cb1fcb (patch)
tree962ecf3dbea41b0d4d539a60498b6942304bd844 /Zend/zend_API.c
parenta0d472e1dad4a1cb719ba56a1ca4da19fadfdfb3 (diff)
downloadphp-git-8c81d80e10e0f189307fc8ff4a8fb34bd0cb1fcb.tar.gz
Made ZEND_ACC_TRAIT a saner value
CC_TRAIT valued as 0x120 is too magical to be comprehensible by others.
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r--Zend/zend_API.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index bd0f330a2f..fe6ae33802 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -1090,11 +1090,14 @@ ZEND_API void object_properties_load(zend_object *object, HashTable *properties)
* calling zend_merge_properties(). */
ZEND_API int _object_and_properties_init(zval *arg, zend_class_entry *class_type, HashTable *properties ZEND_FILE_LINE_DC) /* {{{ */
{
- if (class_type->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
- char *what = (class_type->ce_flags & ZEND_ACC_INTERFACE) ? "interface"
- :((class_type->ce_flags & ZEND_ACC_TRAIT) == ZEND_ACC_TRAIT) ? "trait"
- : "abstract class";
- zend_error(E_ERROR, "Cannot instantiate %s %s", what, class_type->name->val);
+ if (class_type->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
+ if (class_type->ce_flags & ZEND_ACC_INTERFACE) {
+ zend_error_noreturn(E_ERROR, "Cannot instantiate interface %s", class_type->name->val);
+ } else if (class_type->ce_flags & ZEND_ACC_TRAIT) {
+ zend_error_noreturn(E_ERROR, "Cannot instantiate trait %s", class_type->name->val);
+ } else {
+ zend_error_noreturn(E_ERROR, "Cannot instantiate abstract class %s", class_type->name->val);
+ }
}
zend_update_class_constants(class_type);