diff --git a/src/common/pack.h b/src/common/pack.h index 44c6a179feff4f5577a5a091c0272202a363ec3a..fabec48ffa96b8558ea5cadb6a5a7bc3eb15faa3 100644 --- a/src/common/pack.h +++ b/src/common/pack.h @@ -205,7 +205,7 @@ int unpackmem_array(char *valp, uint32_t size_valp, Buf buffer); #define safe_pack_bit_fmt(bitmap,max_len,buf) do { \ assert(buf->magic == BUF_MAGIC); \ - assert(max_len <= 0xffff); \ + assert(max_len < 0xffff); \ if (bitmap) { \ char _tmp_str[max_len]; \ uint32_t _size; \ @@ -241,6 +241,18 @@ int unpackmem_array(char *valp, uint32_t size_valp, Buf buffer); packmem(str,(uint16_t)_size,buf); \ } while (0) +#define pack_bit_fmt(bitmap,buf) do { \ + assert(buf->magic == BUF_MAGIC); \ + if (bitmap) { \ + char _tmp_str[0xfffe]; \ + uint32_t _size; \ + bit_fmt(_tmp_str,0xfffe,bitmap); \ + _size = strlen(_tmp_str)+1; \ + packmem(_tmp_str,(uint16_t)_size,buf); \ + } else \ + packmem(NULL,(uint16_t)0,buf); \ +} while (0) + #define unpackstr_ptr \ unpackmem_ptr