Search whole range for safe parser detection
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
@implementation RSXMLData
|
||||
|
||||
static const NSUInteger minNumberOfBytesToSearch = 20;
|
||||
static const NSInteger numberOfCharactersToSearch = 4096;
|
||||
static const NSUInteger numberOfCharactersToSearch = 4096;
|
||||
|
||||
- (instancetype)initWithData:(NSData *)data urlString:(NSString *)urlString {
|
||||
self = [super init];
|
||||
@@ -158,17 +158,13 @@ static const NSInteger numberOfCharactersToSearch = 4096;
|
||||
return nil;
|
||||
}
|
||||
|
||||
NSRange rangeToSearch = NSMakeRange(0, numberOfCharactersToSearch);
|
||||
if (s.length < numberOfCharactersToSearch) {
|
||||
rangeToSearch.length = s.length;
|
||||
}
|
||||
|
||||
NSRange wholeRange = NSMakeRange(0, s.length);
|
||||
for (Class parserClass in [self listOfParserClasses]) {
|
||||
NSArray<const NSString *> *tags = [parserClass parserRequireOrderedTags];
|
||||
|
||||
NSUInteger oldPos = 0;
|
||||
for (NSString *tag in tags) {
|
||||
NSUInteger newPos = [s rangeOfString:tag options:NSCaseInsensitiveSearch range:rangeToSearch].location;
|
||||
NSUInteger newPos = [s rangeOfString:tag options:NSCaseInsensitiveSearch range:wholeRange].location;
|
||||
if (newPos == NSNotFound || newPos < oldPos) {
|
||||
oldPos = NSNotFound;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user