From 351142f93f0cdcaa8a5bcc14bd0c41b893b20d90 Mon Sep 17 00:00:00 2001 From: Asher Baker Date: Thu, 18 Jul 2013 17:59:24 -0400 Subject: [PATCH] Fixed inaccurate compiler error when ternary operator is involved (bug 5711, r=dvander). --- sourcepawn/compiler/sc3.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sourcepawn/compiler/sc3.c b/sourcepawn/compiler/sc3.c index 9e65112e..2347cc3d 100644 --- a/sourcepawn/compiler/sc3.c +++ b/sourcepawn/compiler/sc3.c @@ -1331,13 +1331,15 @@ static int hier13(value *lval) ldconst(lval2.constval,sPRI); array1= (lval->ident==iARRAY || lval->ident==iREFARRAY); array2= (lval2.ident==iARRAY || lval2.ident==iREFARRAY); - if (array1 && !array2) { + if (!array1 && array2) { const char *ptr = "-unknown-"; - if (lval->sym != NULL && lval->sym->name != NULL) + if (lval->sym != NULL && lval->sym->name != NULL) ptr = lval->sym->name; error(33,ptr); /* array must be indexed */ - } else if (!array1 && array2) { - char *ptr=(lval2.sym->name!=NULL) ? lval2.sym->name : "-unknown-"; + } else if (array1 && !array2) { + const char *ptr = "-unknown-"; + if (lval2.sym != NULL && lval2.sym->name != NULL) + ptr = lval2.sym->name; error(33,ptr); /* array must be indexed */ } /* if */ /* ??? if both are arrays, should check dimensions */