From 433b18ec2b54387119abdeb0a85767cd92e4a23b Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 16 Apr 2015 14:32:42 +0200 Subject: cc: catch non constant pointer initializers char FOO[] = "abc"; /* ok */ char *BAR = FOO; /* ok */ char *BAZ = BAR; /* wrong */ --- sys/src/cmd/cc/dcl.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'sys/src/cmd/cc') diff --git a/sys/src/cmd/cc/dcl.c b/sys/src/cmd/cc/dcl.c index 968654165..7b2ae464f 100644 --- a/sys/src/cmd/cc/dcl.c +++ b/sys/src/cmd/cc/dcl.c @@ -381,8 +381,14 @@ init1(Sym *s, Type *t, long o, int exflag) diag(a, "initialization of incompatible pointers: %s\n%T and %T", s->name, t, a->type); } - if(a->op == OADDR) + if(a->op == OADDR) { a = a->left; + goto gext; + } + if(a->type->etype == TIND) { + diag(a, "initializer is not a constant: %s", s->name); + return Z; + } goto gext; } -- cgit v1.2.3