diff --git a/upb/mini_table/decode.c b/upb/mini_table/decode.c index 506d3999a4..b8adaf60c1 100644 --- a/upb/mini_table/decode.c +++ b/upb/mini_table/decode.c @@ -975,12 +975,12 @@ static const char* upb_MtDecoder_BuildMiniTableExtension( extendee, sub); } -const char* _upb_MiniTableExtension_Build(const char* data, size_t len, - upb_MiniTableExtension* ext, - const upb_MiniTable* extendee, - upb_MiniTableSub sub, - upb_MiniTablePlatform platform, - upb_Status* status) { +const char* _upb_MiniTableExtension_Init(const char* data, size_t len, + upb_MiniTableExtension* ext, + const upb_MiniTable* extendee, + upb_MiniTableSub sub, + upb_MiniTablePlatform platform, + upb_Status* status) { upb_MtDecoder decoder = { .arena = NULL, .status = status, diff --git a/upb/mini_table/decode.h b/upb/mini_table/decode.h index 57d7e52cae..efcbe20414 100644 --- a/upb/mini_table/decode.h +++ b/upb/mini_table/decode.h @@ -79,18 +79,21 @@ UPB_API bool upb_MiniTable_SetSubEnum(upb_MiniTable* table, upb_MiniTableField* field, const upb_MiniTableEnum* sub); -const char* _upb_MiniTableExtension_Build(const char* data, size_t len, - upb_MiniTableExtension* ext, - const upb_MiniTable* extendee, - upb_MiniTableSub sub, - upb_MiniTablePlatform platform, - upb_Status* status); - -UPB_API_INLINE const char* upb_MiniTableExtension_Build( +// Initializes a MiniTableExtension buffer that has already been allocated. +// This is needed (for example) by upb_FileDef, which allocates all of the +// extensions together in a single contiguous array. +const char* _upb_MiniTableExtension_Init(const char* data, size_t len, + upb_MiniTableExtension* ext, + const upb_MiniTable* extendee, + upb_MiniTableSub sub, + upb_MiniTablePlatform platform, + upb_Status* status); + +UPB_API_INLINE const char* upb_MiniTableExtension_Init( const char* data, size_t len, upb_MiniTableExtension* ext, const upb_MiniTable* extendee, upb_MiniTableSub sub, upb_Status* status) { - return _upb_MiniTableExtension_Build(data, len, ext, extendee, sub, - kUpb_MiniTablePlatform_Native, status); + return _upb_MiniTableExtension_Init(data, len, ext, extendee, sub, + kUpb_MiniTablePlatform_Native, status); } UPB_API upb_MiniTableEnum* upb_MiniTableEnum_Build(const char* data, size_t len, diff --git a/upb/reflection/field_def.c b/upb/reflection/field_def.c index cc509dd6cd..da4d03807b 100644 --- a/upb/reflection/field_def.c +++ b/upb/reflection/field_def.c @@ -593,7 +593,7 @@ static void _upb_FieldDef_Create(upb_DefBuilder* ctx, const char* prefix, } } else if (has_type_name) { f->type_ = - UPB_FIELD_TYPE_UNSPECIFIED; // We'll fill this in in resolve_fielddef() + UPB_FIELD_TYPE_UNSPECIFIED; // We'll assign this in resolve_fielddef() } if (f->type_ < kUpb_FieldType_Double || f->type_ > kUpb_FieldType_SInt64) { @@ -877,9 +877,9 @@ void _upb_FieldDef_BuildMiniTableExtension(upb_DefBuilder* ctx, } else if (_upb_FieldDef_IsClosedEnum(f)) { sub.subenum = _upb_EnumDef_MiniTable(f->sub.enumdef); } - bool ok2 = upb_MiniTableExtension_Build(desc.data, desc.size, mut_ext, - upb_MessageDef_MiniTable(f->msgdef), - sub, ctx->status); + bool ok2 = upb_MiniTableExtension_Init(desc.data, desc.size, mut_ext, + upb_MessageDef_MiniTable(f->msgdef), + sub, ctx->status); if (!ok2) _upb_DefBuilder_Errf(ctx, "Could not build extension mini table"); } diff --git a/upb/test/fuzz_util.cc b/upb/test/fuzz_util.cc index 8fafc000a3..09b1daec0f 100644 --- a/upb/test/fuzz_util.cc +++ b/upb/test/fuzz_util.cc @@ -134,8 +134,8 @@ void Builder::BuildExtensions(upb_ExtensionRegistry** exts) { upb_MiniTableSub sub; const upb_MiniTable* extendee = NextMiniTable(); if (!extendee) break; - ptr = upb_MiniTableExtension_Build(ptr, end - ptr, ext, extendee, sub, - status.ptr()); + ptr = upb_MiniTableExtension_Init(ptr, end - ptr, ext, extendee, sub, + status.ptr()); if (!ptr) break; if (!LinkExtension(ext)) continue; if (upb_ExtensionRegistry_Lookup(*exts, ext->extendee, ext->field.number))