From 04665a9c944bdb6ed62f5223b62852c61ea6fc1e Mon Sep 17 00:00:00 2001 From: "Wolfgang (Blub) Bumiller" Date: Thu, 22 Nov 2012 21:25:02 +0100 Subject: [PATCH] conversion warnings and sanity check --- ir.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ir.c b/ir.c index 70004b8..a8d54f0 100644 --- a/ir.c +++ b/ir.c @@ -3045,8 +3045,8 @@ static bool ir_builder_gen_field(ir_builder *self, ir_value *field) prog_section_def def; prog_section_field fld; - def.type = field->vtype; - def.offset = vec_size(code_globals); + def.type = (uint16_t)field->vtype; + def.offset = (uint16_t)vec_size(code_globals); /* create a global named the same as the field */ if (opts_standard == COMPILER_GMQCC) { @@ -3134,6 +3134,11 @@ bool ir_builder_generate(ir_builder *self, const char *filename) } } + if (vec_size(code_globals) >= 65536) { + irerror(vec_last(self->globals)->context, "This progs file would require more globals than the metadata can handle. Bailing out."); + return false; + } + /* DP errors if the last instruction is not an INSTR_DONE * and for debugging purposes we add an additional AINSTR_END * to the end of functions, so here it goes: