X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fhelper%2Fbinarybuffer.c;h=53ad4d395da899ea33de8d40a27c7777749cc070;hb=f0ce88b3af9a6090ac986160950d66317de5087e;hp=e5f9854d44a1fcc966129dd48f2c332deb6005c9;hpb=d09e308130619f8667b6f08399cfc7d16dddab36;p=openocd.git diff --git a/src/helper/binarybuffer.c b/src/helper/binarybuffer.c index e5f9854d44..53ad4d395d 100644 --- a/src/helper/binarybuffer.c +++ b/src/helper/binarybuffer.c @@ -113,26 +113,29 @@ bool buf_cmp_mask(const void *_buf1, const void *_buf2, } -uint8_t* buf_set_ones(uint8_t *buf, int count) +void* buf_set_ones(void *_buf, unsigned size) { - for (unsigned i = 0, num_bytes = CEIL(count, 8); i < num_bytes; i++) - { - if (count >= 8) - buf[i] = 0xff; - else - buf[i] = (1 << count) - 1; + uint8_t *buf = _buf; + if (!buf) + return NULL; - count -= 8; - } + memset(buf, 0xff, size / 8); + + unsigned trailing_bits = size % 8; + if (trailing_bits) + buf[size / 8] = (1 << trailing_bits) - 1; return buf; } -uint8_t* buf_set_buf(const uint8_t *src, int src_start, uint8_t *dst, int dst_start, int len) +void* buf_set_buf(const void *_src, unsigned src_start, + void *_dst, unsigned dst_start, unsigned len) { - int src_idx = src_start, dst_idx = dst_start; + const uint8_t *src = _src; + uint8_t *dst = _dst; - for (int i = 0; i < len; i++) + unsigned src_idx = src_start, dst_idx = dst_start; + for (unsigned i = 0; i < len; i++) { if (((src[src_idx / 8] >> (src_idx % 8)) & 1) == 1) dst[dst_idx / 8] |= 1 << (dst_idx % 8);