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);