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

Unified Diff: src/core/SkStream.cpp

Issue 568683002: use SkData::NewUninitialized (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: add SkStream::readIntoData Created 6 years, 3 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: src/core/SkStream.cpp
diff --git a/src/core/SkStream.cpp b/src/core/SkStream.cpp
index b04bc162d2b96221f2e98b37ead8f6746ef6419a..86513e9a9f1d22cf09720f929cf1b5575021fdf0 100644
--- a/src/core/SkStream.cpp
+++ b/src/core/SkStream.cpp
@@ -66,13 +66,15 @@ size_t SkStream::readPackedUInt() {
SkData* SkStream::readData() {
size_t size = this->readU32();
- if (0 == size) {
- return SkData::NewEmpty();
- } else {
- SkData* data = SkData::NewUninitialized(size);
- this->read(data->writable_data(), size);
- return data;
+ return size ? this->readIntoData(size) : SkData::NewEmpty();
+}
+
+SkData* SkStream::readIntoData(size_t size) {
+ SkAutoDataUnref data(SkData::NewUninitialized(size));
+ if (this->read(data->writable_data(), size) != size) {
+ return NULL;
}
+ return data.detach();
}
//////////////////////////////////////////////////////////////////////////////////////
@@ -890,13 +892,7 @@ SkData* SkCopyStreamToData(SkStream* stream) {
SkASSERT(stream != NULL);
if (stream->hasLength()) {
- const size_t length = stream->getLength();
- SkData* data = SkData::NewUninitialized(length);
- if (stream->read(data->writable_data(), length) != length) {
- data->unref();
- data = NULL;
- }
- return data;
+ return stream->readIntoData(stream->getLength());
}
SkDynamicMemoryWStream tempStream;
@@ -923,9 +919,7 @@ SkStreamRewindable* SkStreamRewindableFromSkStream(SkStream* stream) {
if (stream->hasPosition()) { // If stream has length, but can't rewind.
length -= stream->getPosition();
}
- SkAutoTUnref<SkData> data(SkData::NewUninitialized(length));
- SkDEBUGCODE(size_t read =) stream->read(data->writable_data(), length);
- SkASSERT(length == read);
+ SkAutoTUnref<SkData> data(stream->readIntoData(length));
return SkNEW_ARGS(SkMemoryStream, (data.get()));
}
SkDynamicMemoryWStream tempStream;

Powered by Google App Engine
This is Rietveld 408576698