summaryrefslogtreecommitdiffstats
path: root/extensions/browser/file_highlighter.cc
diff options
context:
space:
mode:
authorrdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-10 20:33:55 +0000
committerrdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-10 20:33:55 +0000
commit55164968203f5d9f52eaba41fa04b08860646217 (patch)
treed078f1b17d49b84d48c6caa0cdfc429802cf6e90 /extensions/browser/file_highlighter.cc
parentee2085b3a548e0959c31ce06cd42d48540899a52 (diff)
downloadchromium_src-55164968203f5d9f52eaba41fa04b08860646217.zip
chromium_src-55164968203f5d9f52eaba41fa04b08860646217.tar.gz
chromium_src-55164968203f5d9f52eaba41fa04b08860646217.tar.bz2
Handle invalid input, add more tests for SourceHighlighter
In response to Finnur's @ 23624002 BUG=21734 Review URL: https://chromiumcodereview.appspot.com/23875013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@222330 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/browser/file_highlighter.cc')
-rw-r--r--extensions/browser/file_highlighter.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/extensions/browser/file_highlighter.cc b/extensions/browser/file_highlighter.cc
index d3edeca..2cc669e 100644
--- a/extensions/browser/file_highlighter.cc
+++ b/extensions/browser/file_highlighter.cc
@@ -203,8 +203,19 @@ SourceHighlighter::~SourceHighlighter() {
}
void SourceHighlighter::Parse(size_t line_number) {
- for (size_t i = 1; i < line_number; ++i)
- start_ = contents_.find('\n', start_) + 1;
+ // If line 0 is requested, highlight nothing.
+ if (line_number == 0) {
+ start_ = contents_.size();
+ return;
+ }
+
+ for (size_t i = 1; i < line_number; ++i) {
+ start_ = contents_.find('\n', start_);
+ if (start_ == std::string::npos)
+ break;
+ start_ += 1;
+ }
+
end_ = contents_.find('\n', start_);
// If we went off the end of the string (i.e., the line number was invalid),