diff --git a/src/base58.h b/src/base58.h index 985b0447c07a8..266412c861c95 100644 --- a/src/base58.h +++ b/src/base58.h @@ -173,14 +173,16 @@ class CBase58Data ~CBase58Data() { - memset(&vchData[0], 0, vchData.size()); + if (!vchData.empty()) + memset(&vchData[0], 0, vchData.size()); } void SetData(int nVersionIn, const void* pdata, size_t nSize) { nVersion = nVersionIn; vchData.resize(nSize); - memcpy(&vchData[0], pdata, nSize); + if (!vchData.empty()) + memcpy(&vchData[0], pdata, nSize); } void SetData(int nVersionIn, const unsigned char *pbegin, const unsigned char *pend) @@ -201,7 +203,8 @@ class CBase58Data } nVersion = vchTemp[0]; vchData.resize(vchTemp.size() - 1); - memcpy(&vchData[0], &vchTemp[1], vchData.size()); + if (!vchData.empty()) + memcpy(&vchData[0], &vchTemp[1], vchData.size()); memset(&vchTemp[0], 0, vchTemp.size()); return true; } @@ -221,7 +224,7 @@ class CBase58Data int CompareTo(const CBase58Data& b58) const { if (nVersion < b58.nVersion) return -1; - if (nVersion < b58.nVersion) return 1; + if (nVersion > b58.nVersion) return 1; if (vchData < b58.vchData) return -1; if (vchData > b58.vchData) return 1; return 0;