Index: src/OFMutableString.m ================================================================== --- src/OFMutableString.m +++ src/OFMutableString.m @@ -572,11 +572,12 @@ { size_t i; for (i = 0; i < s->cStringLength; i++) if (s->cString[i] != ' ' && s->cString[i] != '\t' && - s->cString[i] != '\n' && s->cString[i] != '\r') + s->cString[i] != '\n' && s->cString[i] != '\r' && + s->cString[i] != '\f') break; s->cStringLength -= i; s->length -= i; @@ -597,11 +598,12 @@ size_t d; char *p; d = 0; for (p = s->cString + s->cStringLength - 1; p >= s->cString; p--) { - if (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\r') + if (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\r' && + *p != '\f') break; *p = '\0'; d++; } @@ -623,11 +625,12 @@ size_t d, i; char *p; d = 0; for (p = s->cString + s->cStringLength - 1; p >= s->cString; p--) { - if (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\r') + if (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\r' && + *p != '\f') break; *p = '\0'; d++; } @@ -635,11 +638,12 @@ s->cStringLength -= d; s->length -= d; for (i = 0; i < s->cStringLength; i++) if (s->cString[i] != ' ' && s->cString[i] != '\t' && - s->cString[i] != '\n' && s->cString[i] != '\r') + s->cString[i] != '\n' && s->cString[i] != '\r' && + s->cString[i] != '\f') break; s->cStringLength -= i; s->length -= i; Index: src/OFString.m ================================================================== --- src/OFString.m +++ src/OFString.m @@ -1690,11 +1690,11 @@ int i = 0; intmax_t value = 0; BOOL expectWhitespace = NO; while (*cString == ' ' || *cString == '\t' || *cString == '\n' || - *cString == '\r') { + *cString == '\r' || *cString == '\f') { cString++; cStringLength--; } if (cString[0] == '-' || cString[0] == '+') @@ -1701,11 +1701,12 @@ i++; for (; i < cStringLength; i++) { if (expectWhitespace) { if (cString[i] != ' ' && cString[i] != '\t' && - cString[i] != '\n' && cString[i] != '\r') + cString[i] != '\n' && cString[i] != '\r' && + cString[i] != '\f') @throw [OFInvalidFormatException newWithClass: isa]; continue; } @@ -1715,11 +1716,12 @@ @throw [OFOutOfRangeException newWithClass: isa]; value = (value * 10) + (cString[i] - '0'); } else if (cString[i] == ' ' || cString[i] == '\t' || - cString[i] == '\n' || cString[i] == '\r') + cString[i] == '\n' || cString[i] == '\r' || + cString[i] == '\f') expectWhitespace = YES; else @throw [OFInvalidFormatException newWithClass: isa]; } @@ -1736,11 +1738,11 @@ int i = 0; uintmax_t value = 0; BOOL expectWhitespace = NO, foundValue = NO; while (*cString == ' ' || *cString == '\t' || *cString == '\n' || - *cString == '\r') { + *cString == '\r' || *cString == '\f') { cString++; cStringLength--; } if (cStringLength == 0) @@ -1754,11 +1756,12 @@ for (; i < cStringLength; i++) { uintmax_t newValue; if (expectWhitespace) { if (cString[i] != ' ' && cString[i] != '\t' && - cString[i] != '\n' && cString[i] != '\r') + cString[i] != '\n' && cString[i] != '\r' && + cString[i] != '\f') @throw [OFInvalidFormatException newWithClass: isa]; continue; } @@ -1771,11 +1774,11 @@ } else if (cString[i] >= 'a' && cString[i] <= 'f') { newValue = (value << 4) | (cString[i] - 'a' + 10); foundValue = YES; } else if (cString[i] == 'h' || cString[i] == ' ' || cString[i] == '\t' || cString[i] == '\n' || - cString[i] == '\r') { + cString[i] == '\r' || cString[i] == '\f') { expectWhitespace = YES; continue; } else @throw [OFInvalidFormatException newWithClass: isa]; @@ -1796,20 +1799,21 @@ const char *cString = s->cString; char *endPointer = NULL; float value; while (*cString == ' ' || *cString == '\t' || *cString == '\n' || - *cString == '\r') + *cString == '\r' || *cString == '\f') cString++; value = strtof(cString, &endPointer); /* Check if there are any invalid chars left */ if (endPointer != NULL) for (; *endPointer != '\0'; endPointer++) if (*endPointer != ' ' && *endPointer != '\t' && - *endPointer != '\n' && *endPointer != '\r') + *endPointer != '\n' && *endPointer != '\r' && + *endPointer != '\f') @throw [OFInvalidFormatException newWithClass: isa]; return value; } @@ -1819,20 +1823,21 @@ const char *cString = s->cString; char *endPointer = NULL; double value; while (*cString == ' ' || *cString == '\t' || *cString == '\n' || - *cString == '\r') + *cString == '\r' || *cString == '\f') cString++; value = strtod(cString, &endPointer); /* Check if there are any invalid chars left */ if (endPointer != NULL) for (; *endPointer != '\0'; endPointer++) if (*endPointer != ' ' && *endPointer != '\t' && - *endPointer != '\n' && *endPointer != '\r') + *endPointer != '\n' && *endPointer != '\r' && + *endPointer != '\f') @throw [OFInvalidFormatException newWithClass: isa]; return value; } Index: src/OFXMLParser.m ================================================================== --- src/OFXMLParser.m +++ src/OFXMLParser.m @@ -315,11 +315,11 @@ { size_t length; if ((finishedParsing || [previous count] < 1) && buffer[*i] != ' ' && buffer[*i] != '\t' && buffer[*i] != '\n' && buffer[*i] != '\r' && - buffer[*i] != '<') + buffer[*i] != '\f' && buffer[*i] != '<') @throw [OFMalformedXMLException newWithClass: isa parser: self]; if (buffer[*i] != '<') return; @@ -407,11 +407,12 @@ for (i = last = 0; i < length; i++) { switch (piState) { case 0: if (cString[i] == ' ' || cString[i] == '\t' || - cString[i] == '\r' || cString[i] == '\n') + cString[i] == '\r' || cString[i] == '\n' || + cString[i] == '\f') continue; last = i; piState = 1; i--; @@ -523,11 +524,12 @@ const char *cacheCString, *tmp; size_t length, cacheLength; OFString *cacheString; if (buffer[*i] != ' ' && buffer[*i] != '\t' && buffer[*i] != '\n' && - buffer[*i] != '\r' && buffer[*i] != '>' && buffer[*i] != '/') + buffer[*i] != '\r' && buffer[*i] != '\f' && buffer[*i] != '>' && + buffer[*i] != '/') return; if ((length = *i - *last) > 0) cache_append(cache, buffer + *last, encoding, length); @@ -624,11 +626,11 @@ size_t length, cacheLength; OFString *cacheString; OFString *ns; if (buffer[*i] != ' ' && buffer[*i] != '\t' && buffer[*i] != '\n' && - buffer[*i] != '\r' && buffer[*i] != '>') + buffer[*i] != '\r' && buffer[*i] != '\f' && buffer[*i] != '>') return; if ((length = *i - *last) > 0) cache_append(cache, buffer + *last, encoding, length); @@ -700,11 +702,12 @@ OFXMLAttribute **attributesCArray; size_t j, attributesCount; if (buffer[*i] != '>' && buffer[*i] != '/') { if (buffer[*i] != ' ' && buffer[*i] != '\t' && - buffer[*i] != '\n' && buffer[*i] != '\r') { + buffer[*i] != '\n' && buffer[*i] != '\r' && + buffer[*i] != '\f') { *last = *i; state = OF_XMLPARSER_IN_ATTR_NAME; (*i)--; } @@ -826,11 +829,11 @@ last: (size_t*)last { *last = *i + 1; if (buffer[*i] == ' ' || buffer[*i] == '\t' || buffer[*i] == '\n' || - buffer[*i] == '\r') + buffer[*i] == '\r' || buffer[*i] == '\f') return; if (buffer[*i] != '\'' && buffer[*i] != '"') @throw [OFMalformedXMLException newWithClass: isa parser: self]; @@ -903,11 +906,11 @@ { if (buffer[*i] == '>') { *last = *i + 1; state = OF_XMLPARSER_OUTSIDE_TAG; } else if (buffer[*i] != ' ' && buffer[*i] != '\t' && - buffer[*i] != '\n' && buffer[*i] != '\r') + buffer[*i] != '\n' && buffer[*i] != '\r' && buffer[*i] != '\f') @throw [OFMalformedXMLException newWithClass: isa parser: self]; } /* In