Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(707)

Unified Diff: content/browser/download/download_item_impl.cc

Issue 12607011: Fix a crashing call to GURL::spec() in downloads_api.cc:DownloadItemToJSON() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: @r188114 Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/download/download_item_impl.cc
diff --git a/content/browser/download/download_item_impl.cc b/content/browser/download/download_item_impl.cc
index 1708a63c50cabe56137073dea3f94dff5acf0a38..a1fa926b3182450680c6668ac0a42fcb970c4714 100644
--- a/content/browser/download/download_item_impl.cc
+++ b/content/browser/download/download_item_impl.cc
@@ -474,8 +474,7 @@ bool DownloadItemImpl::IsComplete() const {
}
const GURL& DownloadItemImpl::GetURL() const {
- return url_chain_.empty() ?
- GURL::EmptyGURL() : url_chain_.back();
+ return url_chain_.empty() ? GURL::EmptyGURL() : url_chain_.back();
}
const std::vector<GURL>& DownloadItemImpl::GetUrlChain() const {
@@ -483,7 +482,9 @@ const std::vector<GURL>& DownloadItemImpl::GetUrlChain() const {
}
const GURL& DownloadItemImpl::GetOriginalUrl() const {
- return url_chain_.front();
+ // Be careful about taking the front() of possibly-empty vectors!
+ // http://crbug.com/190096
+ return url_chain_.empty() ? GURL::EmptyGURL() : url_chain_.front();
}
const GURL& DownloadItemImpl::GetReferrerUrl() const {
@@ -721,12 +722,12 @@ std::string DownloadItemImpl::DebugString(bool verbose) const {
if (!url_chain_.empty()) {
std::vector<GURL>::const_iterator iter = url_chain_.begin();
std::vector<GURL>::const_iterator last = url_chain_.end();
- url_list = (*iter).spec();
+ url_list = (*iter).is_valid() ? (*iter).spec() : "<invalid>";
++iter;
for ( ; verbose && (iter != last); ++iter) {
url_list += " ->\n\t";
const GURL& next_url = *iter;
- url_list += next_url.spec();
+ url_list += next_url.is_valid() ? next_url.spec() : "<invalid>";
}
}
« no previous file with comments | « chrome/browser/extensions/api/downloads/downloads_api.cc ('k') | content/browser/download/download_manager_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698