Browse Source

Merge pull request #255 from iosphere/check-range-location

Fix NSRangeException by checking range of NSTextCheckingResult
Pierre-Olivier Latour 9 years ago
parent
commit
5f2877b85f
1 changed files with 6 additions and 1 deletions
  1. 6 1
      GCDWebServer/Core/GCDWebServer.m

+ 6 - 1
GCDWebServer/Core/GCDWebServer.m

@@ -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]];
+          }
         }
       }