commit - 6d0918263815f42917efe14158e8f1c21b1aae22
commit + d2d73a094eb58f7ecf091d401f4d33ca905e17cd
blob - 752936b447d350244418b89e47c9861bf9797ef1
blob + 3ef5adffb4966a3003b993abc2656429566e5baf
--- iri.c
+++ iri.c
}
static inline int
-remove_dot_segments(struct iri *i)
+remove_dot_segments(char *buf, ptrdiff_t bufsize)
{
- char *p, *q, *buf;
- ptrdiff_t bufsize;
+ char *p, *q;
- buf = p = q = i->iri_path;
- bufsize = sizeof(i->iri_path);
+ p = q = buf;
while (*p && (q - buf < bufsize)) {
if (p[0] == '/' && p[1] == '.' &&
(p[2] == '/' || p[2] == '\0')) {
if (iparsed.iri_flags & IH_SCHEME) {
cpfields(iri, &iparsed, iparsed.iri_flags);
- remove_dot_segments(iri);
+ remove_dot_segments(iri->iri_path, sizeof(iri->iri_path));
return (0);
}
if (iparsed.iri_flags & IH_HOST) {
cpfields(iri, &iparsed, IH_AUTHORITY|IH_PATH|IH_QUERY);
- remove_dot_segments(iri);
+ remove_dot_segments(iri->iri_path, sizeof(iri->iri_path));
return (0);
}
if (mergepath(iri, &ibase, &iparsed) == -1)
return (-1);
}
- if (remove_dot_segments(iri) == -1)
+ if (remove_dot_segments(iri->iri_path, sizeof(iri->iri_path)) == -1)
return (-1);
return (0);
}