if (p[0] == '%')
{
- if (p[1] == 0)
- return 0; /* error: invalid string */
-
- if (p[1] == '%')
+ if (!ISXDIGIT(p[1]) || !ISXDIGIT(p[2]))
{
*c = '%';
return 1;
return 0; /* error: invalid string */
*c = X2DIGITS_TO_NUM (p[1], p[2]);
-
- return 3;
+ if (URL_RESERVED_CHAR(*c))
+ {
+ *c = '%';
+ return 1;
+ }
+ else
+ return 3;
}
}
else