summaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authormtomasz <mtomasz@chromium.org>2015-03-02 16:20:06 -0800
committerCommit bot <commit-bot@chromium.org>2015-03-03 00:20:47 +0000
commitf6629637feb3bbf186de75da8fe4028a5244389f (patch)
tree351f379fdf94744541adae4cab38ea12f54c420d /storage
parent47904be75e5fdea64ba0b4c49472b722aabf6a43 (diff)
downloadchromium_src-f6629637feb3bbf186de75da8fe4028a5244389f.zip
chromium_src-f6629637feb3bbf186de75da8fe4028a5244389f.tar.gz
chromium_src-f6629637feb3bbf186de75da8fe4028a5244389f.tar.bz2
Allow offsets in blobs larger than 2GB on 32 bit Chromium builds.
The recent patch crrev.com/895933007 introduced a regression by using size_t for offsets, which on 32bit builds is sizeof(size_t) = 4 which was causing broken offset values due to assigning a uint64_t variable to such variables. This CL fixes that by simply converting the types to uint64_t. TEST=*FileSystemProvider*BigFile* on a 32 bit build Chromium build with chromeos=1. BUG=375297, 458122 Review URL: https://codereview.chromium.org/959113002 Cr-Commit-Position: refs/heads/master@{#318808}
Diffstat (limited to 'storage')
-rw-r--r--storage/browser/blob/blob_storage_context.cc10
-rw-r--r--storage/browser/blob/blob_storage_context.h4
2 files changed, 7 insertions, 7 deletions
diff --git a/storage/browser/blob/blob_storage_context.cc b/storage/browser/blob/blob_storage_context.cc
index 5170ceb..b673930 100644
--- a/storage/browser/blob/blob_storage_context.cc
+++ b/storage/browser/blob/blob_storage_context.cc
@@ -375,8 +375,8 @@ bool BlobStorageContext::AppendAllocatedBlobItem(
bool BlobStorageContext::AppendBlob(
const std::string& target_blob_uuid,
const InternalBlobData& blob,
- size_t offset,
- size_t length,
+ uint64_t offset,
+ uint64_t length,
InternalBlobData::Builder* target_blob_builder) {
DCHECK(length > 0);
@@ -395,10 +395,10 @@ bool BlobStorageContext::AppendBlob(
for (; iter != items.end() && length > 0; ++iter) {
scoped_refptr<ShareableBlobDataItem> shareable_item = iter->get();
const BlobDataItem& item = *(shareable_item->item());
- size_t item_length = item.length();
+ uint64_t item_length = item.length();
DCHECK_GT(item_length, offset);
- size_t current_length = item_length - offset;
- size_t new_length = current_length > length ? length : current_length;
+ uint64_t current_length = item_length - offset;
+ uint64_t new_length = current_length > length ? length : current_length;
bool reusing_blob_item = offset == 0 && new_length == item.length();
UMA_HISTOGRAM_BOOLEAN("Storage.Blob.ReusedItem", reusing_blob_item);
diff --git a/storage/browser/blob/blob_storage_context.h b/storage/browser/blob/blob_storage_context.h
index 175e9002..cf73c8a 100644
--- a/storage/browser/blob/blob_storage_context.h
+++ b/storage/browser/blob/blob_storage_context.h
@@ -122,8 +122,8 @@ class STORAGE_EXPORT BlobStorageContext
// have to split an item.
bool AppendBlob(const std::string& target_blob_uuid,
const InternalBlobData& blob,
- size_t offset,
- size_t length,
+ uint64_t offset,
+ uint64_t length,
InternalBlobData::Builder* target_blob_data);
bool IsInUse(const std::string& uuid);