Permalink
Browse files

Fix well known type class not inheriting Message (#5095)

* Fix well known type class not inheriting Message

Previously, well known types only implement Message interface but not inhert it.
Fix the problem by calling zend_do_inheritance

* Add back commented tests
  • Loading branch information...
TeBoring committed Aug 31, 2018
1 parent 98e26a4 commit d05926861b62c5e7e2ff901f39a7edcda191bf5e
Showing with 4 additions and 2 deletions.
  1. +3 −2 php/ext/google/protobuf/protobuf.h
  2. +1 −0 php/tests/well_known_test.php
@@ -138,7 +138,8 @@
INIT_CLASS_ENTRY_EX(class_type, CLASSNAME, strlen(CLASSNAME), \
LOWWERNAME##_methods); \
LOWWERNAME##_type = zend_register_internal_class(&class_type TSRMLS_CC); \
LOWWERNAME##_type->create_object = message_create;
LOWWERNAME##_type->create_object = message_create; \
zend_do_inheritance(LOWWERNAME##_type, message_type TSRMLS_CC);
#define PHP_PROTO_INIT_SUBMSGCLASS_END \
}
@@ -404,7 +405,7 @@ static inline int php_proto_zend_hash_get_current_data_ex(HashTable* ht,
INIT_CLASS_ENTRY_EX(class_type, CLASSNAME, strlen(CLASSNAME), \
LOWWERNAME##_methods); \
LOWWERNAME##_type = zend_register_internal_class(&class_type TSRMLS_CC); \
LOWWERNAME##_type->create_object = message_create;
zend_do_inheritance(LOWWERNAME##_type, message_type TSRMLS_CC);
#define PHP_PROTO_INIT_SUBMSGCLASS_END \
}
@@ -42,6 +42,7 @@ class WellKnownTest extends TestBase {
public function testEmpty()
{
$msg = new GPBEmpty();
$this->assertTrue($msg instanceof \Google\Protobuf\Internal\Message);
}
public function testImportDescriptorProto()

0 comments on commit d059268

Please sign in to comment.