X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=ftepp.c;h=6d5026479807434c98e0af53ec52ea8c3428bad7;hb=8f34e9fa37589bd4f23e6c5d823a9e52fb2d3e1c;hp=577cd6fe6241f79a21de5a1eb75e1c4fdb30af4a;hpb=bd12429cd005f84b8a81eea49c68abc1a35359a4;p=xonotic%2Fgmqcc.git diff --git a/ftepp.c b/ftepp.c index 577cd6f..6d50264 100644 --- a/ftepp.c +++ b/ftepp.c @@ -77,13 +77,13 @@ typedef struct { * Implement the predef subsystem now. We can do this safely with the * help of lexer contexts. */ -static int ftepp_predef_countval = 0; -static int ftepp_predef_randval = 0; +static uint32_t ftepp_predef_countval = 0; +static uint32_t ftepp_predef_randval = 0; /* __LINE__ */ char *ftepp_predef_line(lex_file *context) { - char *value = (char*)mem_a(128); - sprintf(value, "%d", (int)context->line); + char *value; + util_asprintf(&value, "%d", (int)context->line); return value; } /* __FILE__ */ @@ -97,34 +97,34 @@ char *ftepp_predef_file(lex_file *context) { } /* __COUNTER_LAST__ */ char *ftepp_predef_counterlast(lex_file *context) { - char *value = (char*)mem_a(128); - sprintf(value, "%d", ftepp_predef_countval); + char *value; + util_asprintf(&value, "%u", ftepp_predef_countval); (void)context; return value; } /* __COUNTER__ */ char *ftepp_predef_counter(lex_file *context) { - char *value = (char*)mem_a(128); + char *value; ftepp_predef_countval ++; - sprintf(value, "%d", ftepp_predef_countval); + util_asprintf(&value, "%u", ftepp_predef_countval); (void)context; return value; } /* __RANDOM__ */ char *ftepp_predef_random(lex_file *context) { - char *value = (char*)mem_a(128); - ftepp_predef_randval = rand() % 0xFFFF; /* short int */ - sprintf(value, "%d", ftepp_predef_randval); + char *value; + ftepp_predef_randval = (util_rand() % 0xFF) + 1; + util_asprintf(&value, "%u", ftepp_predef_randval); (void)context; return value; } /* __RANDOM_LAST__ */ char *ftepp_predef_randomlast(lex_file *context) { - char *value = (char*)mem_a(128); - sprintf(value, "%d", ftepp_predef_randval); + char *value; + util_asprintf(&value, "%u", ftepp_predef_randval); (void)context; return value; @@ -1391,14 +1391,16 @@ static bool ftepp_preprocess(ftepp_t *ftepp) case TOKEN_IDENT: case TOKEN_TYPENAME: /* is it a predef? */ - for (i = 0; i < sizeof(ftepp_predefs) / sizeof (*ftepp_predefs); i++) { - if (!strcmp(ftepp_predefs[i].name, ftepp_tokval(ftepp))) { - expand = ftepp_predefs[i].func(ftepp->lex); - ftepp_out(ftepp, expand, false); - ftepp_next(ftepp); /* skip */ - - mem_d(expand); /* free memory */ - break; + if (OPTS_FLAG(FTEPP_PREDEFS)) { + for (i = 0; i < sizeof(ftepp_predefs) / sizeof (*ftepp_predefs); i++) { + if (!strcmp(ftepp_predefs[i].name, ftepp_tokval(ftepp))) { + expand = ftepp_predefs[i].func(ftepp->lex); + ftepp_out(ftepp, expand, false); + ftepp_next(ftepp); /* skip */ + + mem_d(expand); /* free memory */ + break; + } } }