aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/cc/cc.c
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2020-05-30 19:54:27 -0700
committerNicholas Noll <nbnoll@eml.cc>2020-05-30 19:54:27 -0700
commit6bceaa4a60da1f075bdd3133d7d95d8d5d7a06ac (patch)
tree37bb8eb3667c397d1b7e6bd1733aae710abd6dd7 /sys/cmd/cc/cc.c
parentfc158ab464fd58aec17aa590bc2022f539fefc5a (diff)
fix: many use before initialization bugs
Diffstat (limited to 'sys/cmd/cc/cc.c')
-rw-r--r--sys/cmd/cc/cc.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/cmd/cc/cc.c b/sys/cmd/cc/cc.c
index da4c4ed..3246292 100644
--- a/sys/cmd/cc/cc.c
+++ b/sys/cmd/cc/cc.c
@@ -277,9 +277,21 @@ freelx(Lexer *lx)
void
initp(Parser *p)
{
+ /* initialize temporary buffers */
+ memset(p->spstk, 0, sizeof(p->spstk));
+ memset(p->nmstk, 0, sizeof(p->nmstk));
+ memset(p->dtstk, 0, sizeof(p->dtstk));
+ memset(p->ptstk, 0, sizeof(p->ptstk));
+
p->sp = p->spstk;
p->nm = p->nmstk;
p->dt = p->dtstk;
+ p->pt = p->ptstk;
+
+ /* initialize ast */
+ p->ast.cap = 0;
+ p->ast.len = 0;
+ p->ast.decls = nil;
}
error