| Index: third_party/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc
|
| diff --git a/third_party/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc b/third_party/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc
|
| index b01123b4c0efb821eb9150f67a1fa6ebb8dbb496..4f339e77235413e278e3074bbe0deb347b1291ba 100644
|
| --- a/third_party/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc
|
| +++ b/third_party/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc
|
| @@ -107,8 +107,7 @@ static int UpdateChildMessages(RepeatedCompositeContainer* self) {
|
| for (Py_ssize_t i = child_length; i < message_length; ++i) {
|
| const Message& sub_message = reflection->GetRepeatedMessage(
|
| *(self->message), self->parent_field_descriptor, i);
|
| - CMessage* cmsg = cmessage::NewEmptyMessage(self->subclass_init,
|
| - sub_message.GetDescriptor());
|
| + CMessage* cmsg = cmessage::NewEmptyMessage(self->child_message_class);
|
| ScopedPyObjectPtr py_cmsg(reinterpret_cast<PyObject*>(cmsg));
|
| if (cmsg == NULL) {
|
| return -1;
|
| @@ -140,8 +139,7 @@ static PyObject* AddToAttached(RepeatedCompositeContainer* self,
|
| Message* sub_message =
|
| message->GetReflection()->AddMessage(message,
|
| self->parent_field_descriptor);
|
| - CMessage* cmsg = cmessage::NewEmptyMessage(self->subclass_init,
|
| - sub_message->GetDescriptor());
|
| + CMessage* cmsg = cmessage::NewEmptyMessage(self->child_message_class);
|
| if (cmsg == NULL)
|
| return NULL;
|
|
|
| @@ -168,7 +166,7 @@ static PyObject* AddToReleased(RepeatedCompositeContainer* self,
|
|
|
| // Create a new Message detached from the rest.
|
| PyObject* py_cmsg = PyEval_CallObjectWithKeywords(
|
| - self->subclass_init, NULL, kwargs);
|
| + self->child_message_class->AsPyObject(), NULL, kwargs);
|
| if (py_cmsg == NULL)
|
| return NULL;
|
|
|
| @@ -506,7 +504,7 @@ int SetOwner(RepeatedCompositeContainer* self,
|
| PyObject *NewContainer(
|
| CMessage* parent,
|
| const FieldDescriptor* parent_field_descriptor,
|
| - PyObject *concrete_class) {
|
| + CMessageClass* concrete_class) {
|
| if (!CheckFieldBelongsToMessage(parent_field_descriptor, parent->message)) {
|
| return NULL;
|
| }
|
| @@ -523,7 +521,7 @@ PyObject *NewContainer(
|
| self->parent_field_descriptor = parent_field_descriptor;
|
| self->owner = parent->owner;
|
| Py_INCREF(concrete_class);
|
| - self->subclass_init = concrete_class;
|
| + self->child_message_class = concrete_class;
|
| self->child_messages = PyList_New(0);
|
|
|
| return reinterpret_cast<PyObject*>(self);
|
| @@ -531,7 +529,7 @@ PyObject *NewContainer(
|
|
|
| static void Dealloc(RepeatedCompositeContainer* self) {
|
| Py_CLEAR(self->child_messages);
|
| - Py_CLEAR(self->subclass_init);
|
| + Py_CLEAR(self->child_message_class);
|
| // TODO(tibell): Do we need to call delete on these objects to make
|
| // sure their destructors are called?
|
| self->owner.reset();
|
|
|