From: David Schleef Date: Thu, 9 Jul 2009 19:11:10 +0000 (-0700) Subject: parse: allocate programs array dynamically X-Git-Tag: orc-0.4.5~22^2~32 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=15dea05fac607df522d007929cd54f5d5b923097;p=platform%2Fupstream%2Forc.git parse: allocate programs array dynamically --- diff --git a/orc/orcparse.c b/orc/orcparse.c index e27f5c0..88ee0a6 100644 --- a/orc/orcparse.c +++ b/orc/orcparse.c @@ -33,6 +33,7 @@ struct _OrcParser { OrcProgram **programs; int n_programs; + int n_programs_alloc; }; static void orc_parse_get_line (OrcParser *parser); @@ -52,7 +53,6 @@ orc_parse (const char *code, OrcProgram ***programs) parser->line_number = -1; parser->p = code; parser->opcode_set = orc_opcode_set_get ("sys"); - parser->programs = malloc (sizeof(OrcProgram *)*100); while (parser->p[0] != 0) { char *p; @@ -107,6 +107,11 @@ orc_parse (const char *code, OrcProgram ***programs) if (strcmp (token[0], ".function") == 0) { parser->program = orc_program_new (); orc_program_set_name (parser->program, token[1]); + if (parser->n_programs == parser->n_programs_alloc) { + parser->n_programs_alloc += 32; + parser->programs = realloc (parser->programs, + sizeof(OrcProgram *)*parser->n_programs_alloc); + } parser->programs[parser->n_programs] = parser->program; parser->n_programs++; parser->creg_index = 1;