From 4c14dc3fbf17bed9cfd66a8d86b5eb57aba39a6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Fri, 22 Jan 2021 12:20:13 +0100 Subject: [PATCH] Macro processor: gracefully fail when argument to @#ifdef/@#ifndef is not a variable name Ref. dynare#1771 --- src/macro/Directives.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/macro/Directives.cc b/src/macro/Directives.cc index 51abcedf..0e234234 100644 --- a/src/macro/Directives.cc +++ b/src/macro/Directives.cc @@ -1,5 +1,5 @@ /* - * Copyright © 2019-2020 Dynare Team + * Copyright © 2019-2021 Dynare Team * * This file is part of Dynare. * @@ -253,7 +253,9 @@ If::interpret(ostream &output, Environment &env, vector &paths { first_clause = false; VariablePtr vp = dynamic_pointer_cast(expr); - assert(vp); + if (!vp) + error(StackTrace(ifdef ? "@#ifdef" : "@ifndef", + "The condition must be a variable name", location)); if ((ifdef && env.isVariableDefined(vp->getName())) || (ifndef && !env.isVariableDefined(vp->getName()))) {