@@ -367,7 +367,7 @@ static inline str parse_attrval(document* d)
367static inline str parse_attributes(document* d)
367static inline str parse_attributes(document* d)
369 int start = d->attrs.used;
369 int start = d->attrs.used;
370− for (;;)
370+ while (d->error_message == NULL)
373 str name = parse_name(d);
373 str name = parse_name(d);
@@ -396,6 +396,7 @@ static inline void parse_tag(document* d)
396 if (peek(d) == '?') skip(d, 1);
396 if (peek(d) == '?') skip(d, 1);
397 me->name = parse_name(d);
397 me->name = parse_name(d);
398 me->attrs = parse_attributes(d);
398 me->attrs = parse_attributes(d);
399+ if (d->error_message != NULL) return;
400 c = get(d);
401 c = get(d);
401 if ((c == '/' || c == '?') && peek(d) == '>')
402 if ((c == '/' || c == '?') && peek(d) == '>')