diff --git a/src/Serializer.cpp b/src/Serializer.cpp index 8b67d3b65..016c6e2a6 100644 --- a/src/Serializer.cpp +++ b/src/Serializer.cpp @@ -305,7 +305,7 @@ uint256 Serializer::getSHA512Half(const unsigned char *data, int len) uint256 Serializer::getSHA512Half(const std::string& strData) { - return getSHA512Half(reinterpret_cast(strData.c_str()), strData.size()); + return getSHA512Half(reinterpret_cast(strData.data()), strData.size()); } uint256 Serializer::getPrefixHash(uint32 prefix, const unsigned char *data, int len) @@ -367,7 +367,16 @@ int Serializer::addVL(const std::vector& vector) int Serializer::addVL(const void *ptr, int len) { int ret = addRaw(encodeVL(len)); - if (len) addRaw(ptr, len); + if (len) + addRaw(ptr, len); + return ret; +} + +int Serializer::addVL(const std::string& string) +{ + int ret = addRaw(string.size()); + if (!string.empty()) + addRaw(string.data(), string.size()); return ret; } diff --git a/src/Serializer.h b/src/Serializer.h index fc1f1df49..7b7b67fe2 100644 --- a/src/Serializer.h +++ b/src/Serializer.h @@ -44,6 +44,7 @@ public: int addZeros(size_t uBytes); int addVL(const std::vector &vector); + int addVL(const std::string& string); int addVL(const void *ptr, int len); int addTaggedList(const std::list&); int addTaggedList(const std::vector&); @@ -87,7 +88,7 @@ public: static uint256 getPrefixHash(uint32 prefix, const std::vector& data) { return getPrefixHash(prefix, &(data.front()), data.size()); } static uint256 getPrefixHash(uint32 prefix, const std::string& strData) - { return getPrefixHash(prefix, reinterpret_cast(strData.c_str()), strData.size()); } + { return getPrefixHash(prefix, reinterpret_cast(strData.data()), strData.size()); } // totality functions const std::vector& peekData() const { return mData; }