From 141ac15182bb444553b5761d8894edad3db78a92 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 17 Apr 2012 19:54:01 +0000 Subject: stack and ref may be large --- Makefile | 2 +- gramar.y | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 482290f..0174ec5 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ PROG= dcpu SRCS= gramar.y lexer.l emu.c main.c tui.c y.tab.h NOMAN= LDADD+= -lcurses -#DEBUG= -Wall -ggdb -pg +DEBUG= -Wall -ggdb -pg #YFLAGS= -dtv .include diff --git a/gramar.y b/gramar.y index 806917d..1267201 100644 --- a/gramar.y +++ b/gramar.y @@ -35,10 +35,10 @@ void addref(char *); extern int yydebug; #endif -struct { +struct pair { unsigned short val; char *label; -} stack[0x100], ref[0x100]; +} *stack, *ref; int sp = 0; int rp = 0; @@ -276,6 +276,8 @@ compile(FILE *fd, size_t sz) { buffer = calloc(sz, sizeof(unsigned short)); label = calloc(sz, sizeof(char *)); + stack = calloc(sz, sizeof(struct pair)); + ref = calloc(sz, sizeof(struct pair)); #if YYDEBUG yydebug = 1; @@ -284,6 +286,9 @@ compile(FILE *fd, size_t sz) yyin = fd; yyparse(); restorerefs(); + + free(ref); + free(stack); free(label); return buffer; -- cgit v1.2.3