summaryrefslogtreecommitdiff
path: root/src/upb_array.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/upb_array.h')
-rw-r--r--src/upb_array.h11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/upb_array.h b/src/upb_array.h
index f79e35d..577cbd4 100644
--- a/src/upb_array.h
+++ b/src/upb_array.h
@@ -70,14 +70,13 @@ INLINE uint32_t upb_round_up_to_pow2(uint32_t v)
INLINE union upb_value_ptr upb_array_append(struct upb_array *arr)
{
size_t size = upb_type_info[arr->fielddef->type].size;
- upb_arraylen_t oldlen = arr->len;
- if(oldlen == arr->size) {
- arr->size = UPB_MAX(4, upb_round_up_to_pow2(oldlen+1));
+ if(arr->len == arr->size) {
+ arr->size = UPB_MAX(4, upb_round_up_to_pow2(arr->len + 1));
arr->elements._void = realloc(arr->elements._void, arr->size * size);
- memset((char*)arr->elements._void + (arr->len*size), 0, (arr->size - arr->len) * size);
+ memset((char*)arr->elements._void + (arr->len * size), 0,
+ (arr->size - arr->len) * size);
}
- arr->len++;
- return upb_array_getelementptr(arr, oldlen);
+ return upb_array_getelementptr(arr, arr->len++);
}
INLINE void upb_array_truncate(struct upb_array *arr)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback