diff --git a/python/descriptor.c b/python/descriptor.c index e7bef1214b..105461294a 100644 --- a/python/descriptor.c +++ b/python/descriptor.c @@ -1105,7 +1105,7 @@ static const void* PyUpb_FileDescriptor_NestedLookup( PyUpb_FileDescriptor_LookupFunc* func) { const upb_DefPool* symtab = upb_FileDef_Pool(filedef); const char* package = upb_FileDef_Package(filedef); - if (package) { + if (strlen(package)) { PyObject* qname = PyUnicode_FromFormat("%s.%s", package, name); const void* ret = func(symtab, PyUnicode_AsUTF8AndSize(qname, NULL)); Py_DECREF(qname); diff --git a/upb/def.c b/upb/def.c index e980afcfc5..c1a9d211e6 100644 --- a/upb/def.c +++ b/upb/def.c @@ -927,7 +927,9 @@ bool upb_FileDef_HasOptions(const upb_FileDef* f) { const char* upb_FileDef_Name(const upb_FileDef* f) { return f->name; } -const char* upb_FileDef_Package(const upb_FileDef* f) { return f->package; } +const char* upb_FileDef_Package(const upb_FileDef* f) { + return f->package ? f->package : ""; +} upb_Syntax upb_FileDef_Syntax(const upb_FileDef* f) { return f->syntax; } @@ -2897,8 +2899,8 @@ static void build_filedef( file->name = strviewdup(ctx, google_protobuf_FileDescriptorProto_name(file_proto)); - if (google_protobuf_FileDescriptorProto_has_package(file_proto)) { - upb_StringView package = google_protobuf_FileDescriptorProto_package(file_proto); + upb_StringView package = google_protobuf_FileDescriptorProto_package(file_proto); + if (package.size) { check_ident(ctx, package, true); file->package = strviewdup(ctx, package); } else {