diff --git a/upb/message/internal/extension.c b/upb/message/internal/extension.c index 85a09fd2d0..f55253d495 100644 --- a/upb/message/internal/extension.c +++ b/upb/message/internal/extension.c @@ -49,6 +49,7 @@ const upb_Extension* UPB_PRIVATE(_upb_Message_Getexts)( upb_Extension* UPB_PRIVATE(_upb_Message_GetOrCreateExtension)( struct upb_Message* msg, const upb_MiniTableExtension* e, upb_Arena* a) { + UPB_ASSERT(!upb_Message_IsFrozen(msg)); upb_Extension* ext = (upb_Extension*)UPB_PRIVATE(_upb_Message_Getext)(msg, e); if (ext) return ext; if (!UPB_PRIVATE(_upb_Message_Realloc)(msg, sizeof(upb_Extension), a)) diff --git a/upb/message/promote.c b/upb/message/promote.c index d4b1ad1dee..6496e23a68 100644 --- a/upb/message/promote.c +++ b/upb/message/promote.c @@ -67,6 +67,7 @@ static upb_UnknownToMessageRet upb_MiniTable_ParseUnknownMessage( upb_GetExtension_Status upb_Message_GetOrPromoteExtension( upb_Message* msg, const upb_MiniTableExtension* ext_table, int decode_options, upb_Arena* arena, upb_MessageValue* value) { + UPB_ASSERT(!upb_Message_IsFrozen(msg)); UPB_ASSERT(upb_MiniTableExtension_CType(ext_table) == kUpb_CType_Message); const upb_Extension* extension = UPB_PRIVATE(_upb_Message_Getext)(msg, ext_table); @@ -177,6 +178,7 @@ upb_DecodeStatus upb_Message_PromoteMessage(upb_Message* parent, int decode_options, upb_Arena* arena, upb_Message** promoted) { + UPB_ASSERT(!upb_Message_IsFrozen(parent)); const upb_MiniTable* sub_table = upb_MiniTable_GetSubMessageTable(mini_table, field); UPB_ASSERT(sub_table); @@ -233,6 +235,7 @@ upb_UnknownToMessageRet upb_MiniTable_PromoteUnknownToMessage( upb_Message* msg, const upb_MiniTable* mini_table, const upb_MiniTableField* field, const upb_MiniTable* sub_mini_table, int decode_options, upb_Arena* arena) { + UPB_ASSERT(!upb_Message_IsFrozen(msg)); upb_FindUnknownRet unknown; // We need to loop and merge unknowns that have matching tag field->number. upb_Message* message = NULL; @@ -292,6 +295,8 @@ upb_UnknownToMessageRet upb_MiniTable_PromoteUnknownToMessage( upb_UnknownToMessage_Status upb_MiniTable_PromoteUnknownToMessageArray( upb_Message* msg, const upb_MiniTableField* field, const upb_MiniTable* mini_table, int decode_options, upb_Arena* arena) { + UPB_ASSERT(!upb_Message_IsFrozen(msg)); + upb_Array* repeated_messages = upb_Message_GetMutableArray(msg, field); // Find all unknowns with given field number and parse. upb_FindUnknownRet unknown; @@ -327,6 +332,8 @@ upb_UnknownToMessage_Status upb_MiniTable_PromoteUnknownToMessageArray( upb_UnknownToMessage_Status upb_MiniTable_PromoteUnknownToMap( upb_Message* msg, const upb_MiniTable* mini_table, const upb_MiniTableField* field, int decode_options, upb_Arena* arena) { + UPB_ASSERT(!upb_Message_IsFrozen(msg)); + const upb_MiniTable* map_entry_mini_table = upb_MiniTable_MapEntrySubMessage(mini_table, field); UPB_ASSERT(upb_MiniTable_FieldCount(map_entry_mini_table) == 2);