multiple update
This commit is contained in:
@ -70,22 +70,28 @@ void capwap_array_resize(struct capwap_array* array, unsigned long count) {
|
||||
if (array->count == count) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (count > 0) {
|
||||
newbuffer = capwap_alloc(array->itemsize * count);
|
||||
if (!newbuffer) {
|
||||
capwap_outofmemory();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (array->buffer) {
|
||||
if (newbuffer != NULL) {
|
||||
memcpy(newbuffer, array->buffer, array->itemsize * min(array->count, count));
|
||||
int newcount = min(array->count, count);
|
||||
memcpy(newbuffer, array->buffer, array->itemsize * newcount);
|
||||
|
||||
/* Zeroed new items */
|
||||
if (array->zeroed && (count > newcount)) {
|
||||
memset(newbuffer + array->itemsize * newcount, 0, array->itemsize * (count - newcount));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
capwap_free(array->buffer);
|
||||
}
|
||||
|
||||
|
||||
array->buffer = newbuffer;
|
||||
array->count = count;
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ struct capwap_array {
|
||||
void* buffer;
|
||||
unsigned short itemsize;
|
||||
unsigned long count;
|
||||
int zeroed;
|
||||
};
|
||||
|
||||
struct capwap_array* capwap_array_create(unsigned short itemsize, unsigned long initcount);
|
||||
@ -13,9 +14,4 @@ void capwap_array_free(struct capwap_array* array);
|
||||
void* capwap_array_get_item_pointer(struct capwap_array* array, unsigned long pos);
|
||||
void capwap_array_resize(struct capwap_array* array, unsigned long count);
|
||||
|
||||
/* Helper */
|
||||
#define capwap_array_getitem(x, y, z) *((z*)capwap_array_get_item_pointer((x), (y)))
|
||||
#define capwap_array_setnewitem(x, y, z) *((z*)capwap_array_get_item_pointer((x), (x)->count)) = (y)
|
||||
|
||||
|
||||
#endif /* __CAPWAP_ARRAY_HEADER__ */
|
||||
|
@ -32,6 +32,11 @@ void capwap_logging_printf(int level, const char *format, ...);
|
||||
#define capwap_logging_error(f, args...) capwap_logging_printf(CAPWAP_LOGGING_ERROR, f, ##args)
|
||||
#define capwap_logging_warning(f, args...) capwap_logging_printf(CAPWAP_LOGGING_WARNING, f, ##args)
|
||||
#define capwap_logging_info(f, args...) capwap_logging_printf(CAPWAP_LOGGING_INFO, f, ##args)
|
||||
|
||||
#ifdef DISABLE_LOGGING_DEBUG
|
||||
#define capwap_logging_debug(f, args...)
|
||||
#else
|
||||
#define capwap_logging_debug(f, args...) capwap_logging_printf(CAPWAP_LOGGING_DEBUG, f, ##args)
|
||||
#endif
|
||||
|
||||
#endif /* __CAPWAP_LOGGING_HEADER__ */
|
||||
|
Reference in New Issue
Block a user