attr = attr->next) {
if (strcmp(attr->name, "link") != 0)
continue;
- if (xar->file->hdnext != NULL || xar->file->link != 0) {
+ if (xar->file->hdnext != NULL || xar->file->link != 0 ||
+ xar->file == xar->hdlink_orgs) {
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
- "File with multiple link targets");
+ "File with multiple link attributes");
return (ARCHIVE_FATAL);
}
if (strcmp(attr->value, "original") == 0) {
struct xmlattr_list list;
int r;
+ if (ud->state != ARCHIVE_OK)
+ return;
+
r = expat_xmlattr_setup(a, &list, atts);
if (r == ARCHIVE_OK)
r = xml_start(a, (const char *)name, &list);
assertA(ARCHIVE_FATAL == archive_read_next_header(a, &ae));
assertEqualString(archive_error_string(a),
- "File with multiple link targets");
+ "File with multiple link attributes");
assert(archive_errno(a) != 0);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));