diff --git a/src/uint256.h b/src/uint256.h index d52604099..6c19c5868 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -709,7 +709,7 @@ inline const uint256 operator|(const uint256& a, const uint256& b) { return (b inline const uint256 operator+(const uint256& a, const uint256& b) { return (base_uint256)a + (base_uint256)b; } inline const uint256 operator-(const uint256& a, const uint256& b) { return (base_uint256)a - (base_uint256)b; } -uint256 uint160extend256(const uint160& uSource); +uint256 uint160extend256(const uint160& uSource, uint uNamespace); inline int Testuint256AdHoc(std::vector vArg) { diff --git a/src/utils.cpp b/src/utils.cpp index 3ae809de7..ca6240cc2 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -1,11 +1,14 @@ #include "utils.h" #include "uint256.h" -uint256 uint160extend256(const uint160& uSource) +// XXX Assume little-endian. +uint256 uint160extend256(const uint160& uSource, uint uNamespace) { uint256 uResult; - memcpy(uResult.begin() + (uResult.size() - uSource.size()), uSource.begin(), uSource.size()); + // Place right justified: in most significant bits. + memcpy(uResult.end() - uSource.size(), uSource.begin(), uSource.size()); + uResult.begin()[uResult.size() - uSource.size() - 1] = uNamespace; return uResult; }