upb: lock down upb_MiniTableSub

PiperOrigin-RevId: 586187469
diff --git a/upb/wire/decode_fast.c b/upb/wire/decode_fast.c
index 5a412ef..a77aea3 100644
--- a/upb/wire/decode_fast.c
+++ b/upb/wire/decode_fast.c
@@ -20,6 +20,7 @@
 #include "upb/message/array.h"
 #include "upb/message/internal/array.h"
 #include "upb/message/internal/types.h"
+#include "upb/mini_table/sub.h"
 #include "upb/wire/internal/decode.h"
 
 // Must be last.
@@ -914,7 +915,8 @@
   upb_Message** dst;                                                      \
   uint32_t submsg_idx = (data >> 16) & 0xff;                              \
   const upb_MiniTable* tablep = decode_totablep(table);                   \
-  const upb_MiniTable* subtablep = tablep->subs[submsg_idx].submsg;       \
+  const upb_MiniTable* subtablep =                                        \
+      upb_MiniTableSub_Message(tablep->subs[submsg_idx]);                 \
   fastdecode_submsgdata submsg = {decode_totable(subtablep)};             \
   fastdecode_arr farr;                                                    \
                                                                           \