diff --git a/internal/cbm/lsp/cs_lsp.c b/internal/cbm/lsp/cs_lsp.c index c5ee1a87b..023a963af 100644 --- a/internal/cbm/lsp/cs_lsp.c +++ b/internal/cbm/lsp/cs_lsp.c @@ -3883,7 +3883,9 @@ CBMTypeRegistry *cbm_cs_build_cross_registry(CBMArena *arena, CBMLSPDef *defs, i } cs_register_lsp_defs(arena, reg, cs, type_count); cbm_registry_finalize(reg); - cs_register_lsp_defs(arena, reg, cs + type_count, total - type_count); + if (total > type_count) { /* cs is NULL for an empty corpus: no offset */ + cs_register_lsp_defs(arena, reg, cs + type_count, total - type_count); + } cbm_registry_finalize(reg); reg->read_only = true; /* seal: shared Tier-2 registry is read-only during resolve */ return reg; diff --git a/internal/cbm/lsp/java_lsp.c b/internal/cbm/lsp/java_lsp.c index 2b518d890..cf221f06e 100644 --- a/internal/cbm/lsp/java_lsp.c +++ b/internal/cbm/lsp/java_lsp.c @@ -3879,7 +3879,9 @@ CBMTypeRegistry *cbm_java_build_cross_registry(CBMArena *arena, CBMLSPDef *defs, } cbm_java_register_lsp_defs(arena, reg, jvm, type_count); cbm_registry_finalize(reg); - cbm_java_register_lsp_defs(arena, reg, jvm + type_count, total - type_count); + if (total > type_count) { /* jvm is NULL for an empty corpus: no offset */ + cbm_java_register_lsp_defs(arena, reg, jvm + type_count, total - type_count); + } cbm_registry_finalize(reg); reg->read_only = true; /* seal: shared Tier-2 registry is read-only during resolve */ return reg;