Since "sizeof buffer" won't work with dynamically allocated buffers, and we still sometimes need to know the size of the whole buffer, we need a way to always obtain said size.
Signed-off-by: Alexander Shishkin <[email protected]> --- include/libbb.h | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/include/libbb.h b/include/libbb.h index 85fcbb0..656e5c6 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -234,15 +234,22 @@ typedef unsigned long uoff_t; #define RESERVE_CONFIG_BUFFER(buffer,len) char buffer[len] #define RESERVE_CONFIG_UBUFFER(buffer,len) unsigned char buffer[len] #define RELEASE_CONFIG_BUFFER(buffer) ((void)0) +#define CONFIG_BUFFER_SIZE(buffer) (sizeof buffer) #else #if ENABLE_FEATURE_BUFFERS_GO_IN_BSS #define RESERVE_CONFIG_BUFFER(buffer,len) static char buffer[len] #define RESERVE_CONFIG_UBUFFER(buffer,len) static unsigned char buffer[len] #define RELEASE_CONFIG_BUFFER(buffer) ((void)0) +#define CONFIG_BUFFER_SIZE(buffer) (sizeof buffer) #else -#define RESERVE_CONFIG_BUFFER(buffer,len) char *buffer = xmalloc(len) -#define RESERVE_CONFIG_UBUFFER(buffer,len) unsigned char *buffer = xmalloc(len) +#define RESERVE_CONFIG_BUFFER(buffer,len) \ + char *buffer = xmalloc(len); \ + const size_t __ ## buffer ## _size = len; +#define RESERVE_CONFIG_UBUFFER(buffer,len) \ + unsigned char *buffer = xmalloc(len); \ + const size_t __ ## buffer ## _size = len; #define RELEASE_CONFIG_BUFFER(buffer) free(buffer) +#define CONFIG_BUFFER_SIZE(buffer) __ ## buffer ##_size #endif #endif -- 1.7.1 _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
