Index: base/pickle.h |
=================================================================== |
--- base/pickle.h (revision 271871) |
+++ base/pickle.h (working copy) |
@@ -20,7 +20,7 @@ |
// while the PickleIterator object is in use. |
class BASE_EXPORT PickleIterator { |
public: |
- PickleIterator() : read_ptr_(NULL), read_end_ptr_(NULL) {} |
+ PickleIterator() : payload_ptr_(NULL), read_index_(0), end_index_(0) {} |
explicit PickleIterator(const Pickle& pickle); |
// Methods for reading the payload of the Pickle. To read from the start of |
@@ -63,6 +63,9 @@ |
template <typename Type> |
inline bool ReadBuiltinType(Type* result); |
+ // Advance read_index_ but do not allow it to exceed end_index_. |
+ inline void Advance(size_t size); |
+ |
// Get read pointer for Type and advance read pointer. |
template<typename Type> |
inline const char* GetReadPointerAndAdvance(); |
@@ -77,8 +80,9 @@ |
size_t size_element); |
// Pointers to the Pickle data. |
- const char* read_ptr_; |
- const char* read_end_ptr_; |
+ const char* payload_ptr_; |
+ size_t read_index_; |
+ size_t end_index_; |
FRIEND_TEST_ALL_PREFIXES(PickleTest, GetReadPointerAndAdvance); |
}; |
@@ -277,7 +281,9 @@ |
} |
// The payload is the pickle data immediately following the header. |
- size_t payload_size() const { return header_->payload_size; } |
+ size_t payload_size() const { |
+ return header_ ? header_->payload_size : 0; |
+ } |
const char* payload() const { |
return reinterpret_cast<const char*>(header_) + header_size_; |