--- ice-3.6.3/php/src/php7/Types.cpp.orig 2016-10-05 16:59:08.000000000 +0200 +++ ice-3.6.3/php/src/php7/Types.cpp 2017-06-30 20:05:36.233173124 +0200 @@ -1166,26 +1166,7 @@ { assert(Z_TYPE_P(target) == IS_OBJECT); - // - // The add_property_zval function fails if the data member has protected visibility. - // As a workaround, before calling the function we change the current scope to be that - // of the object. - // - zend_class_entry *oldScope = EG(scope); - EG(scope) = Z_OBJCE_P(target); - - // - // add_property_zval increments the refcount of zv. - // - int status = add_property_zval(target, STRCAST(name.c_str()), zv); - - EG(scope) = oldScope; // Restore the previous scope. - - if(status == FAILURE) - { - runtimeError("unable to set member `%s'", name.c_str()); - throw AbortMarshaling(); - } + zend_update_property(Z_OBJCE_P(target), target, STRCAST(name.c_str()), strlen(name.c_str()), zv); } static void