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

Unified Diff: include/core/SkFlattenableBuffers.h

Issue 37803002: Adding size parameter to read array functions (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Bad upload, retrying Created 7 years, 2 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
« no previous file with comments | « no previous file | src/core/SkColorTable.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/core/SkFlattenableBuffers.h
diff --git a/include/core/SkFlattenableBuffers.h b/include/core/SkFlattenableBuffers.h
index 6e44550be561c6f267ade5f6655557a03d2edb3f..ce19b12bbdac7a4627bac1c71a369c51a46e9d17 100644
--- a/include/core/SkFlattenableBuffers.h
+++ b/include/core/SkFlattenableBuffers.h
@@ -99,11 +99,20 @@ public:
virtual void readPath(SkPath* path) = 0;
// binary data and arrays
- virtual uint32_t readByteArray(void* value) = 0;
- virtual uint32_t readColorArray(SkColor* colors) = 0;
- virtual uint32_t readIntArray(int32_t* values) = 0;
- virtual uint32_t readPointArray(SkPoint* points) = 0;
- virtual uint32_t readScalarArray(SkScalar* values) = 0;
+
+ /**
+ * In the following read.*Array(...) functions, the size parameter specifies the allocation
+ * size (in bytes) of the pointer parameter. In the case where isValidating() is true, then
+ * if the pointer parameter's size does not match the size to be read, the pointer
+ * parameter's memory will then stay uninitialized, the function will return 0 and an error
+ * flag will be set internally (see SkValidatingReadBuffer).
+ * If isValidating() is false, then the size parameter is ignored.
reed1 2013/10/29 19:39:43 What gets return if there is *not* an error? (in b
sugoi1 2013/10/29 20:04:50 It returns the size (or amount) of memory actually
+ */
+ virtual uint32_t readByteArray(void* value, uint32_t size) = 0;
reed1 2013/10/29 19:39:43 shouldn't these be size_t instead of uint32_t, jus
reed1 2013/10/29 19:44:09 What is the state of the buffer if we get an error
sugoi1 2013/10/29 20:04:50 Will add in the description. Thanks.
sugoi1 2013/10/29 20:04:50 Sure, but I'll just mention that, currently, the u
+ virtual uint32_t readColorArray(SkColor* colors, uint32_t size) = 0;
+ virtual uint32_t readIntArray(int32_t* values, uint32_t size) = 0;
+ virtual uint32_t readPointArray(SkPoint* points, uint32_t size) = 0;
+ virtual uint32_t readScalarArray(SkScalar* values, uint32_t size) = 0;
/** This helper peeks into the buffer and reports back the length of the next array in
* the buffer but does not change the state of the buffer.
@@ -127,7 +136,7 @@ public:
SkData* readByteArrayAsData() {
size_t len = this->getArrayCount();
void* buffer = sk_malloc_throw(len);
- (void)this->readByteArray(buffer);
+ (void)this->readByteArray(buffer, len);
return SkData::NewFromMalloc(buffer, len);
}
« no previous file with comments | « no previous file | src/core/SkColorTable.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698