Skip to content

Commit 31a5854

Browse files
committed
bbitmap: report size_used in buffered dump path
Return size_used for both complete and incomplete buffered dumps. Reported-by: CodexGPT-5.3 <noreply@openai.com>
1 parent 9401cf2 commit 31a5854

3 files changed

Lines changed: 9 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ Legend:
1717
- [B] str: fix `cdada_str_replace*()` to reject empty match and self-replacement issues
1818
- [B] str: return `NULL` in `cdada_str_create()` when input C string is `NULL`
1919
- [B] str: align `cdada_str()` invalid-handle behavior with API docs (return `NULL`, not empty string)
20+
- [B] bbitmap: make `cdada_bbitmap_dump()` set `size_used` in buffered paths too
2021
- [O] tests: add coverage for `cdada_strerr()` valid, boundary and high invalid values
2122
- [O] tests: add `oom_create_test` coverage for create paths (`list`, `map`, `queue`, `set`, `stack`, `str`, `bbitmap`)
2223
- [O] tests: add coverage for `cdada_str_replace_all()` empty-match invalid input and self-overlap replacement
2324
- [O] tests: add `cdada_str_create(NULL)` regression coverage
2425
- [O] tests: align invalid `cdada_str()` assertion with documented `NULL` return
26+
- [O] tests: validate `cdada_bbitmap_dump()` updates `size_used` for both incomplete and complete buffered dumps
2527

2628
### v0.6.3 (28th January 2026)
2729

src/bbitmap.cc

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,16 @@ int cdada_bbitmap_dump(cdada_bbitmap_t* b, uint32_t size, char* buffer,
112112
std::stringstream ss;
113113
for(i=0;i<b->n_words; ++i)
114114
__cdada_bbitmap_dump_word(i, &b->ptr[i], ss);
115+
*size_used = ss.str().length()+1;
115116

116-
if(!buffer){
117-
*size_used = ss.str().length()+1;
117+
if(!buffer)
118118
return CDADA_SUCCESS;
119-
}
120119

121120
snprintf(buffer, size, "%s", ss.str().c_str());
122-
if(ss.str().length()+1 > size)
121+
if(*size_used > size){
122+
*size_used = size;
123123
return CDADA_E_INCOMPLETE;
124+
}
124125
}catch(bad_alloc& e){
125126
return CDADA_E_MEM;
126127
}catch(...){

test/bbitmap_test.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,13 @@ int test_basics(){
9595

9696
rv = cdada_bbitmap_dump(b, 128, buffer, &used);
9797
TEST_ASSERT(rv == CDADA_E_INCOMPLETE);
98+
TEST_ASSERT(used == 128);
9899
fprintf(stderr, "%s\n", buffer);
99100

100101
char buffer2[2048*16];
101102
rv = cdada_bbitmap_dump(b, 2048*16, buffer2, &used);
102103
TEST_ASSERT(rv == CDADA_SUCCESS);
104+
TEST_ASSERT(used > 128);
103105
fprintf(stderr, "%s\n", buffer2);
104106
rv = cdada_bbitmap_print(b, stdout);
105107
TEST_ASSERT(rv == CDADA_SUCCESS);

0 commit comments

Comments
 (0)