Get the bits right - final/private fix

This commit is contained in:
Zeev Suraski 2003-02-25 10:03:26 +00:00
parent 411478e1f6
commit 5793784c93

View file

@ -916,7 +916,7 @@ int zend_do_verify_access_types(znode *current_access_type, znode *new_modifier)
&& ((current_access_type->u.constant.value.lval & ZEND_ACC_PPP_MASK) != (new_modifier->u.constant.value.lval & ZEND_ACC_PPP_MASK))) { && ((current_access_type->u.constant.value.lval & ZEND_ACC_PPP_MASK) != (new_modifier->u.constant.value.lval & ZEND_ACC_PPP_MASK))) {
zend_error(E_COMPILE_ERROR, "Multiple access type modifiers are not allowed"); zend_error(E_COMPILE_ERROR, "Multiple access type modifiers are not allowed");
} }
if ((current_access_type->u.constant.value.lval | new_modifier->u.constant.value.lval) && (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)) { if (((current_access_type->u.constant.value.lval | new_modifier->u.constant.value.lval) & (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)) == (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)) {
zend_error(E_COMPILE_ERROR, "Cannot use the final modifier on a private class member"); zend_error(E_COMPILE_ERROR, "Cannot use the final modifier on a private class member");
} }
return (current_access_type->u.constant.value.lval | new_modifier->u.constant.value.lval); return (current_access_type->u.constant.value.lval | new_modifier->u.constant.value.lval);