Fix NSRangeException by checking range of NSTextCheckingResult

This commit is contained in:
Lukas Mollidor
2016-01-08 17:56:46 +01:00
parent 3873dd1ad3
commit 47a51c3d42
+6 -1
View File
@@ -957,7 +957,12 @@ static inline NSString* _EncodeBase64(NSString* string) {
for (NSTextCheckingResult* result in matches) {
// Start at 1; index 0 is the whole string
for (NSUInteger i = 1; i < result.numberOfRanges; i++) {
[captures addObject:[urlPath substringWithRange:[result rangeAtIndex:i]]];
NSRange range = [result rangeAtIndex:i];
// range is {NSNotFound, 0} "if one of the capture groups did not participate in this particular match"
// see discussion in -[NSRegularExpression firstMatchInString:options:range:]
if (range.location != NSNotFound) {
[captures addObject:[urlPath substringWithRange:range]];
}
}
}