diff --git a/storm/big/Ops.cpp b/storm/big/Ops.cpp index 9567fcc..f9e8fe6 100644 --- a/storm/big/Ops.cpp +++ b/storm/big/Ops.cpp @@ -82,6 +82,10 @@ void Mul(BigBuffer& a, const BigBuffer& b, const BigBuffer& c, BigStack& stack) stack.UnmakeDistinct(a, aa); } +void SetZero(BigBuffer& buffer) { + buffer.Clear(); +} + void ToBinaryAppend(TSGrowableArray& output, const BigBuffer& buffer) { for (uint32_t i = 0; i < buffer.Count() * 4; i++) { auto byte = buffer[i / 4] >> (8 * (i & 3)); diff --git a/storm/big/Ops.hpp b/storm/big/Ops.hpp index d8f39a5..b39353f 100644 --- a/storm/big/Ops.hpp +++ b/storm/big/Ops.hpp @@ -21,6 +21,8 @@ void Mul(BigBuffer& a, const BigBuffer& b, uint64_t c); void Mul(BigBuffer& a, const BigBuffer& b, const BigBuffer& c, BigStack& stack); +void SetZero(BigBuffer& buffer); + void ToBinary(TSGrowableArray& output, const BigBuffer& buffer); #endif diff --git a/test/Big.cpp b/test/Big.cpp index b049496..4571c37 100644 --- a/test/Big.cpp +++ b/test/Big.cpp @@ -420,3 +420,19 @@ TEST_CASE("SBigToBinaryBuffer", "[big]") { SBigDel(num); } } + +TEST_CASE("SetZero", "[big]") { + SECTION("sets buffer to zero") { + BigData* num; + SBigNew(&num); + SBigFromUnsigned(num, 0x12345678); + + CHECK(num->Primary().Count() == 1); + + SetZero(num->Primary()); + + CHECK(num->Primary().Count() == 0); + + SBigDel(num); + } +}