From: Max msuraev@sysmocom.de
The code in bitvec_*_field was incorrectly ported from C++. This also affected bitvec_unhex which uses it. --- src/bitvec.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/bitvec.c b/src/bitvec.c index 7254674..407dfc8 100644 --- a/src/bitvec.c +++ b/src/bitvec.c @@ -389,6 +389,7 @@ int bitvec_unhex(struct bitvec *bv, const char *src) return 1;
bitvec_write_field(bv, write_index, val, 4); + write_index += 4; } return 0; } @@ -407,7 +408,7 @@ uint64_t bitvec_read_field(struct bitvec *bv, unsigned int read_index, unsigned ui |= ((uint64_t)1 << (len - i - 1)); bv->cur_bit++; } - read_index += len; + return ui; }
@@ -425,8 +426,8 @@ int bitvec_write_field(struct bitvec *bv, unsigned int write_index, uint64_t val if (rc) return rc; } - write_index += len; - return 0; + + return write_index + len; }
/*! @} */