summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-07-08 15:13:00 +0200
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-07-08 15:13:00 +0200
commitd37fa94d0009a49ba9123f22e042109e041c46f8 (patch)
tree0904580717272e6647eed8b289fc419527753bf9
parentd0dbed9ed21123455adcd0277991036ad9bdbb06 (diff)
parent80e9566d52a682b011e38083fbe18f233298f03e (diff)
Merge pull request #101 from valmat/FixIssue100
Fixed issue #100
-rw-r--r--zend/classimpl.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/zend/classimpl.cpp b/zend/classimpl.cpp
index ca75c5e..23c39cf 100644
--- a/zend/classimpl.cpp
+++ b/zend/classimpl.cpp
@@ -1382,14 +1382,25 @@ void ClassImpl::initialize(ClassBase *base, const std::string &prefix TSRMLS_DC)
if (_parent)
{
// check if the base class was already defined
- if (_parent->_entry) entry.parent = _parent->_entry;
-
+ if (_parent->_entry)
+ {
+ // register the class
+ _entry = zend_register_internal_class_ex(&entry, _parent->_entry, const_cast<char*>(_parent->name().c_str()) TSRMLS_CC);
+ }
+
// otherwise an error is reported
- else std::cerr << "Derived class " << name() << " is initialized before base class " << _parent->name() << ": base class is ignored" << std::endl;
+ else
+ {
+ std::cerr << "Derived class " << name() << " is initialized before base class " << _parent->name() << ": base class is ignored" << std::endl;
+ // register the class
+ _entry = zend_register_internal_class(&entry TSRMLS_CC);
+ }
+ }
+ else
+ {
+ // register the class
+ _entry = zend_register_internal_class(&entry TSRMLS_CC);
}
-
- // register the class
- _entry = zend_register_internal_class(&entry TSRMLS_CC);
// register the classes
for (auto &interface : _interfaces)