@@ -367,7 +367,7 @@ static inline str parse_attrval(document* d)
367367static inline str parse_attributes(document* d)
368368{
369369 int start = d->attrs.used;
370− for (;;)
370+ while (d->error_message == NULL)
371371 {
372372 trim(d);
373373 str name = parse_name(d);
@@ -396,6 +396,7 @@ static inline void parse_tag(document* d)
396396 if (peek(d) == '?') skip(d, 1);
397397 me->name = parse_name(d);
398398 me->attrs = parse_attributes(d);
399+ if (d->error_message != NULL) return;
399400
400401 c = get(d);
401402 if ((c == '/' || c == '?') && peek(d) == '>')