From: Wolfgang (Blub) Bumiller Date: Thu, 22 Nov 2012 20:25:02 +0000 (+0100) Subject: conversion warnings and sanity check X-Git-Tag: 0.1.9~341 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=04665a9c944bdb6ed62f5223b62852c61ea6fc1e;p=xonotic%2Fgmqcc.git conversion warnings and sanity check --- 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: