aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkStream.cpp
diff options
context:
space:
mode:
authorGravatar Ben Wagner <bungeman@google.com>2016-10-07 15:50:53 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-18 15:06:24 +0000
commit255ab8d9a55d68b7405280dae6b586d17e23cf71 (patch)
tree06625e0edb3314d6dff3d1cb2bf13d116b6cba3f /src/core/SkStream.cpp
parent8f8d481b44fc486e7190c6e2db8077226d53c969 (diff)
Make SkStream readers report failure.
This also fixes an issue noticed while making this change where SkFontDescriptor improperly round trips negative axis values. Change-Id: Iacc5929a185659dcacc18c802c4908e4f34c6899 Reviewed-on: https://skia-review.googlesource.com/128341 Commit-Queue: Ben Wagner <bungeman@google.com> Reviewed-by: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'src/core/SkStream.cpp')
-rw-r--r--src/core/SkStream.cpp43
1 files changed, 18 insertions, 25 deletions
diff --git a/src/core/SkStream.cpp b/src/core/SkStream.cpp
index dfdc257ff6..57fd7f5d02 100644
--- a/src/core/SkStream.cpp
+++ b/src/core/SkStream.cpp
@@ -20,50 +20,43 @@
///////////////////////////////////////////////////////////////////////////////
-int8_t SkStream::readS8() {
- int8_t value;
- SkDEBUGCODE(size_t len =) this->read(&value, 1);
- SkASSERT(1 == len);
- return value;
+bool SkStream::readS8(int8_t* i) {
+ return this->read(i, sizeof(*i)) == sizeof(*i);
}
-int16_t SkStream::readS16() {
- int16_t value;
- SkDEBUGCODE(size_t len =) this->read(&value, 2);
- SkASSERT(2 == len);
- return value;
+bool SkStream::readS16(int16_t* i) {
+ return this->read(i, sizeof(*i)) == sizeof(*i);
}
-int32_t SkStream::readS32() {
- int32_t value;
- SkDEBUGCODE(size_t len =) this->read(&value, 4);
- SkASSERT(4 == len);
- return value;
+bool SkStream::readS32(int32_t* i) {
+ return this->read(i, sizeof(*i)) == sizeof(*i);
}
-SkScalar SkStream::readScalar() {
- SkScalar value;
- SkDEBUGCODE(size_t len =) this->read(&value, sizeof(SkScalar));
- SkASSERT(sizeof(SkScalar) == len);
- return value;
+bool SkStream::readScalar(SkScalar* i) {
+ return this->read(i, sizeof(*i)) == sizeof(*i);
}
#define SK_MAX_BYTE_FOR_U8 0xFD
#define SK_BYTE_SENTINEL_FOR_U16 0xFE
#define SK_BYTE_SENTINEL_FOR_U32 0xFF
-size_t SkStream::readPackedUInt() {
+bool SkStream::readPackedUInt(size_t* i) {
uint8_t byte;
if (!this->read(&byte, 1)) {
- return 0;
+ return false;
}
if (SK_BYTE_SENTINEL_FOR_U16 == byte) {
- return this->readU16();
+ uint16_t i16;
+ if (!this->readU16(&i16)) { return false; }
+ *i = i16;
} else if (SK_BYTE_SENTINEL_FOR_U32 == byte) {
- return this->readU32();
+ uint32_t i32;
+ if (!this->readU32(&i32)) { return false; }
+ *i = i32;
} else {
- return byte;
+ *i = byte;
}
+ return true;
}
//////////////////////////////////////////////////////////////////////////////////////