From cda28643a6b7f17dc6872f86cc90854d036c4382 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Wed, 20 Mar 2024 16:15:43 -0700 Subject: [PATCH] Fix ConflictSet_getBytes --- ConflictSet.cpp | 15 ++++++++++++--- conflict_set_c_api_test.c | 3 +++ conflict_set_cxx_api_test.cpp | 2 ++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 16ef616..8b97b75 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -2607,16 +2607,25 @@ ConflictSet_check(void *cs, const ConflictSet_ReadRange *reads, __attribute__((__visibility__("default"))) void ConflictSet_addWrites(void *cs, const ConflictSet_WriteRange *writes, int count, int64_t writeVersion) { - ((ConflictSet::Impl *)cs)->addWrites(writes, count, writeVersion); + auto *impl = ((ConflictSet::Impl *)cs); + mallocBytesDelta = 0; + impl->addWrites(writes, count, writeVersion); + impl->totalBytes += mallocBytesDelta; } __attribute__((__visibility__("default"))) void ConflictSet_setOldestVersion(void *cs, int64_t oldestVersion) { - ((ConflictSet::Impl *)cs)->setOldestVersion(oldestVersion); + auto *impl = ((ConflictSet::Impl *)cs); + mallocBytesDelta = 0; + impl->setOldestVersion(oldestVersion); + impl->totalBytes += mallocBytesDelta; } __attribute__((__visibility__("default"))) void * ConflictSet_create(int64_t oldestVersion) { - return new (safe_malloc(sizeof(ConflictSet::Impl))) + mallocBytesDelta = 0; + auto *result = new (safe_malloc(sizeof(ConflictSet::Impl))) ConflictSet::Impl{oldestVersion}; + result->totalBytes += mallocBytesDelta; + return result; } __attribute__((__visibility__("default"))) void ConflictSet_destroy(void *cs) { using Impl = ConflictSet::Impl; diff --git a/conflict_set_c_api_test.c b/conflict_set_c_api_test.c index ed60264..2a5e4f6 100644 --- a/conflict_set_c_api_test.c +++ b/conflict_set_c_api_test.c @@ -7,6 +7,7 @@ int main(void) { ConflictSet_WriteRange w; ConflictSet_Result result; ConflictSet_ReadRange r; + int64_t bytes; w.begin.p = (const uint8_t *)"0000"; w.begin.len = 4; w.end.len = 0; @@ -17,6 +18,8 @@ int main(void) { r.readVersion = 0; ConflictSet_check(cs, &r, &result, 1); assert(result == ConflictSet_Conflict); + bytes = ConflictSet_getBytes(cs); + assert(bytes > 0); ConflictSet_destroy(cs); return 0; } diff --git a/conflict_set_cxx_api_test.cpp b/conflict_set_cxx_api_test.cpp index 725b233..b64da53 100644 --- a/conflict_set_cxx_api_test.cpp +++ b/conflict_set_cxx_api_test.cpp @@ -17,4 +17,6 @@ int main(void) { r.readVersion = 0; cs.check(&r, &result, 1); assert(result == ConflictSet::Conflict); + int64_t bytes = cs.getBytes(); + assert(bytes > 0); }