commit - 871b5bb7caa2a9144d00f5f4711c18aa861bce88
commit + f5bc8482f4f41abd20e767dd613fc323713f3820
blob - d1961d58cf839e88952aebcdaae46b7be773e5fa
blob + 152a34c6023838c2691b4cd1052849df3caeeccb
--- iri.c
+++ iri.c
if (base == NULL) {
ibase.iri_flags = 0;
- if (parse_uri(str, &iparsed) == -1)
+ if (parse_uri(str, &iparsed) == -1) {
+ errno = EINVAL;
return (-1);
+ }
} else {
- if (parse_uri(base, &ibase) == -1)
- return (-1);
- if (parse(str, &iparsed) == -1)
+ if (parse_uri(base, &ibase) == -1 ||
+ parse(str, &iparsed) == -1) {
+ errno = EINVAL;
return (-1);
+ }
}
if (iparsed.iri_flags & IH_SCHEME) {
ibase.iri_path[0] = '\0';
if (!(iparsed.iri_flags & IH_PATH))
iparsed.iri_path[0] = '\0';
- mergepath(iri->iri_path, sizeof(iri->iri_path),
- ibase.iri_path, iparsed.iri_path);
+ if (mergepath(iri, &ibase, &iparsed) == -1)
+ return (-1);
}
- remove_dot_segments(iri);
+ if (remove_dot_segments(iri) == -1)
+ return (-1);
cpfields(iri, &ibase, IH_QUERY);
return (0);
}