47 lines
1.9 KiB
Diff
47 lines
1.9 KiB
Diff
From ffa591aa664fc8620ca387afa041a0a65b0339c6 Mon Sep 17 00:00:00 2001
|
|
From: Christophe Chapuis <chris.chapuis@gmail.com>
|
|
Date: Tue, 10 May 2016 17:37:37 +0000
|
|
Subject: [PATCH 07/10] storage browser quota: workaround for crash on cache
|
|
update
|
|
|
|
When using GCC 5.3.0, we get a crash on the statement:
|
|
"int64* usage = &cached_usage_by_host_[host][origin]"
|
|
Apparently adding implicitely a new (GURL,int64) pair in
|
|
the host cache results in incorrect code on armv7.
|
|
This fix adds the pair more smoothly, step-by-step. The
|
|
resulting binary code isn't faulty anymore.
|
|
|
|
This could be related to the following bug:
|
|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69841
|
|
|
|
Signed-off-by: Christophe Chapuis <chris.chapuis@gmail.com>
|
|
---
|
|
chromium/storage/browser/quota/client_usage_tracker.cc | 12 +++++++++++-
|
|
1 file changed, 11 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/3rdparty/chromium/storage/browser/quota/client_usage_tracker.cc b/src/3rdparty/chromium/storage/browser/quota/client_usage_tracker.cc
|
|
index c9c46f6..c4e9585 100644
|
|
--- a/src/3rdparty/chromium/storage/browser/quota/client_usage_tracker.cc
|
|
+++ b/src/3rdparty/chromium/storage/browser/quota/client_usage_tracker.cc
|
|
@@ -358,7 +358,17 @@ void ClientUsageTracker::AddCachedOrigin(const GURL& origin,
|
|
DCHECK(IsUsageCacheEnabledForOrigin(origin));
|
|
|
|
std::string host = net::GetHostOrSpecFromURL(origin);
|
|
- int64_t* usage = &cached_usage_by_host_[host][origin];
|
|
+
|
|
+ UsageMap& cached_usage_for_host = cached_usage_by_host_[host];
|
|
+ UsageMap::iterator found = cached_usage_for_host.find(origin);
|
|
+ if (found == cached_usage_for_host.end()) {
|
|
+ // try to add it smoothly
|
|
+ std::pair<GURL, int64_t> newPair(origin,0);
|
|
+ cached_usage_for_host.insert(newPair);
|
|
+ }
|
|
+ int64_t* usage = &(cached_usage_for_host[origin]);
|
|
+
|
|
+ //int64* usage = &cached_usage_by_host_[host][origin];
|
|
int64_t delta = new_usage - *usage;
|
|
*usage = new_usage;
|
|
if (delta) {
|
|
--
|
|
2.7.4
|
|
|