diff options
author | mtomasz <mtomasz@chromium.org> | 2015-03-02 16:20:06 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-03 00:20:47 +0000 |
commit | f6629637feb3bbf186de75da8fe4028a5244389f (patch) | |
tree | 351f379fdf94744541adae4cab38ea12f54c420d /storage | |
parent | 47904be75e5fdea64ba0b4c49472b722aabf6a43 (diff) | |
download | chromium_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.cc | 10 | ||||
-rw-r--r-- | storage/browser/blob/blob_storage_context.h | 4 |
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); |