Properly compare Python unknown fields.

pull/13171/head
Joshua Haberman 3 years ago
parent 9bff7b82d1
commit fd9d19d665
  1. 1
      python/BUILD
  2. 7
      python/convert.c
  3. 1
      upb/util/BUILD

@ -63,6 +63,7 @@ cc_binary(
":version_script.lds",
"//:reflection",
"//:upb",
"//upb/util:compare",
"@system_python//:python_headers",
],
)

@ -29,6 +29,7 @@
#include "python/protobuf.h"
#include "upb/reflection.h"
#include "upb/util/compare.h"
PyObject* PyUpb_UpbToPy(upb_msgval val, const upb_fielddef *f, PyObject *arena) {
switch (upb_fielddef_type(f)) {
@ -330,9 +331,5 @@ bool PyUpb_Message_IsEqual(const upb_msg *msg1, const upb_msg *msg2,
size_t usize1, usize2;
const char *uf1 = upb_msg_getunknown(msg1, &usize1);
const char *uf2 = upb_msg_getunknown(msg2, &usize2);
// TODO(haberman): compare unknown fields one by one.
if (usize1 != usize2) return false;
if (memcmp(uf1, uf2, usize1)) return false;
return true;
return upb_Message_UnknownFieldsAreEqual(uf1, usize1, uf2, usize2, 100);
}

@ -94,6 +94,7 @@ cc_library(
srcs = ["compare.c"],
hdrs = ["compare.h"],
deps = ["//:reflection"],
visibility = ["//visibility:public"],
)
cc_test(

Loading…
Cancel
Save