Mercurial > ~dholland > hg > tradcpp > index.cgi
comparison macro.c @ 42:ad7763329eba
Don't crash if a macro tries to expand itself recursively.
author | David A. Holland |
---|---|
date | Sat, 30 Mar 2013 22:29:42 -0400 |
parents | 291fefe664f2 |
children | 2e25e55dba6b |
comparison
equal
deleted
inserted
replaced
41:ef8bedab8a4b | 42:ad7763329eba |
---|---|
842 es->curmacro = NULL; | 842 es->curmacro = NULL; |
843 es->state = ES_WANTLPAREN; | 843 es->state = ES_WANTLPAREN; |
844 break; | 844 break; |
845 } | 845 } |
846 m = macrotable_findlen(buf, len, false); | 846 m = macrotable_findlen(buf, len, false); |
847 if (m == NULL) { | 847 if (m == NULL || m->inuse) { |
848 expand_send(es, p, buf, len); | 848 expand_send(es, p, buf, len); |
849 } else if (!m->hasparams) { | 849 } else if (!m->hasparams) { |
850 m->inuse = true; | 850 m->inuse = true; |
851 assert(expansionitemarray_num(&m->expansion) == 1); | 851 assert(expansionitemarray_num(&m->expansion) == 1); |
852 ei = expansionitemarray_get(&m->expansion, 0); | 852 ei = expansionitemarray_get(&m->expansion, 0); |