diff --git a/iri.c b/iri.c index d62eef5..1436314 100644 --- a/iri.c +++ b/iri.c @@ -22,7 +22,7 @@ static inline int unreserved(int p) { - return isalnum(p) + return isalnum((unsigned char)p) || p == '-' || p == '.' || p == '_' @@ -109,7 +109,7 @@ parse_scheme(struct parser *p) { p->parsed->schema = p->iri; - if (!isalpha(*p->iri)) { + if (!isalpha((unsigned char)*p->iri)) { p->err = "illegal character in scheme"; return 0; } @@ -126,7 +126,7 @@ parse_scheme(struct parser *p) */ *p->iri = tolower(*p->iri); p->iri++; - } while (isalnum(*p->iri) + } while (isalnum((unsigned char)*p->iri) || *p->iri == '+' || *p->iri == '-' || *p->iri == '.');