Skip to content

Commit

Permalink
Fix possible (ok, likely) retain cycle in documents created with -ini…
Browse files Browse the repository at this point in the history
…tWithData:contentTypeHeader:.
  • Loading branch information
nolanw committed Dec 20, 2016
1 parent 2206f2f commit 096dcc0
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Change Log

## [Unreleased][]

* Fix retain cycle on documents created with `-[HTMLDocument initWithData:contentTypeHeader:]`.

## [2.0.1][]

* Fix buffer overflow when parsing named entities.
Expand Down
8 changes: 4 additions & 4 deletions Sources/HTMLParser.m
Original file line number Diff line number Diff line change
Expand Up @@ -3303,15 +3303,15 @@ - (NSUInteger)hash
NSString *initialString;
HTMLStringEncoding initialEncoding = DeterminedStringEncodingForData(data, contentType, &initialString);
HTMLParser *initialParser = [[HTMLParser alloc] initWithString:initialString encoding:initialEncoding context:nil];
__block HTMLParser *parser = initialParser;
__block HTMLParser *finalParser;
initialParser.changeEncoding = ^(HTMLStringEncoding newEncoding) {
NSString *correctedString = [[NSString alloc] initWithData:data encoding:newEncoding.encoding];
if (correctedString) {
parser = [[HTMLParser alloc] initWithString:correctedString encoding:newEncoding context:nil];
finalParser = [[HTMLParser alloc] initWithString:correctedString encoding:newEncoding context:nil];
} else {
parser = [[HTMLParser alloc] initWithString:initialString encoding:initialEncoding context:nil];
finalParser = [[HTMLParser alloc] initWithString:initialString encoding:initialEncoding context:nil];
}
};
[initialParser document];
return parser;
return finalParser ?: initialParser;
}

0 comments on commit 096dcc0

Please sign in to comment.