From 15dea05fac607df522d007929cd54f5d5b923097 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Thu, 9 Jul 2009 12:11:10 -0700 Subject: [PATCH] parse: allocate programs array dynamically --- orc/orcparse.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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; -- 2.7.4