From 65b67eb6b12d352d7bd3a58b743a593040afcb0e Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Wed, 17 Jul 2024 09:39:55 -0700 Subject: [PATCH] Fixed extension memory layout on 32-bit targets. We were failing to propagate the DefPool's platform to the MiniDescriptor builder. This caused upb's code generators to incorrectly generate a field rep of `kUpb_FieldRep_8Byte` for pointer-typed extension fields instead of the 32-bit clean output: ``` UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) ``` PiperOrigin-RevId: 653263168 --- upb/reflection/field_def.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/upb/reflection/field_def.c b/upb/reflection/field_def.c index 9f2775b869..59f1b0ad6c 100644 --- a/upb/reflection/field_def.c +++ b/upb/reflection/field_def.c @@ -982,9 +982,9 @@ void _upb_FieldDef_BuildMiniTableExtension(upb_DefBuilder* ctx, const upb_MiniTableEnum* subenum = _upb_EnumDef_MiniTable(f->sub.enumdef); sub = upb_MiniTableSub_FromEnum(subenum); } - bool ok2 = upb_MiniTableExtension_Init(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->platform, ctx->status); if (!ok2) _upb_DefBuilder_Errf(ctx, "Could not build extension mini table"); }