Skip to content

Commit

Permalink
Use dispatch_once to make the newline charset initialisation thread s…
Browse files Browse the repository at this point in the history
…afe.
  • Loading branch information
Tom Davie authored and Tom Davie committed Oct 17, 2012
1 parent 4556cf8 commit 529e14e
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
5 changes: 3 additions & 2 deletions CoreParse/Tokenisation/CPTokeniser.m
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -212,10 +212,11 @@ - (void)addToken:(CPToken *)tok toStream:(CPTokenStream *)stream


- (void)advanceLineNumber:(NSUInteger *)ln columnNumber:(NSUInteger *)cn withInput:(NSString *)input range:(CFRange)range - (void)advanceLineNumber:(NSUInteger *)ln columnNumber:(NSUInteger *)cn withInput:(NSString *)input range:(CFRange)range
{ {
if (newlineCharset == nil) static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
{ {
newlineCharset = (CFCharacterSetRef)[[NSCharacterSet characterSetWithCharactersInString:@"\n\r"] retain]; newlineCharset = (CFCharacterSetRef)[[NSCharacterSet characterSetWithCharactersInString:@"\n\r"] retain];
} });


CFRange searchRange = range; CFRange searchRange = range;
NSUInteger rangeEnd = range.location + range.length; NSUInteger rangeEnd = range.location + range.length;
Expand Down
7 changes: 3 additions & 4 deletions CoreParseTests/CPTestWhiteSpaceIgnoringDelegate.m
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -15,13 +15,12 @@ - (BOOL)tokeniser:(CPTokeniser *)tokeniser shouldConsumeToken:(CPToken *)token
return YES; return YES;
} }


- (NSArray *)tokeniser:(CPTokeniser *)tokeniser willProduceToken:(CPToken *)token - (void)tokeniser:(CPTokeniser *)tokeniser requestsToken:(CPToken *)token pushedOntoStream:(CPTokenStream *)stream
{ {
if ([token isWhiteSpaceToken] || [[token name] isEqualToString:@"Comment"]) if (![token isWhiteSpaceToken])
{ {
return [NSArray array]; [stream pushToken:token];
} }
return [NSArray arrayWithObject:token];
} }


- (NSUInteger)tokeniser:(CPTokeniser *)tokeniser didNotFindTokenOnInput:(NSString *)input position:(NSUInteger)position error:(NSString **)errorMessage - (NSUInteger)tokeniser:(CPTokeniser *)tokeniser didNotFindTokenOnInput:(NSString *)input position:(NSUInteger)position error:(NSString **)errorMessage
Expand Down

0 comments on commit 529e14e

Please sign in to comment.