diff options
author | jsing <> | 2017-05-07 05:03:41 +0000 |
---|---|---|
committer | jsing <> | 2017-05-07 05:03:41 +0000 |
commit | ad1b182fb82eec32f3f5d1da1c2da2e628439d02 (patch) | |
tree | 4f5e65dc841d29bbac9f1fde247588e1d1bed3c3 /src/lib | |
parent | 3b455600d14ddcf2be0dcd2d4765d1b7854cd1c5 (diff) | |
download | openbsd-ad1b182fb82eec32f3f5d1da1c2da2e628439d02.tar.gz openbsd-ad1b182fb82eec32f3f5d1da1c2da2e628439d02.tar.bz2 openbsd-ad1b182fb82eec32f3f5d1da1c2da2e628439d02.zip |
Instead of starting a 'zero-sized' CBB at the size of the first addition
to the CBB, then doubling, start with an initial size of 64 bytes. Almost
all uses will exceed this size and we avoid multiple small recallocarray()
calls during the initial usage.
ok beck@
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libssl/bs_cbb.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/lib/libssl/bs_cbb.c b/src/lib/libssl/bs_cbb.c index 154a7964e6..dd1dc73d09 100644 --- a/src/lib/libssl/bs_cbb.c +++ b/src/lib/libssl/bs_cbb.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bs_cbb.c,v 1.15 2017/04/14 15:20:55 jsing Exp $ */ | 1 | /* $OpenBSD: bs_cbb.c,v 1.16 2017/05/07 05:03:41 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014, Google Inc. | 3 | * Copyright (c) 2014, Google Inc. |
4 | * | 4 | * |
@@ -22,6 +22,8 @@ | |||
22 | 22 | ||
23 | #include "bytestring.h" | 23 | #include "bytestring.h" |
24 | 24 | ||
25 | #define CBB_INITIAL_SIZE 64 | ||
26 | |||
25 | static int | 27 | static int |
26 | cbb_init(CBB *cbb, uint8_t *buf, size_t cap) | 28 | cbb_init(CBB *cbb, uint8_t *buf, size_t cap) |
27 | { | 29 | { |
@@ -49,10 +51,11 @@ CBB_init(CBB *cbb, size_t initial_capacity) | |||
49 | 51 | ||
50 | memset(cbb, 0, sizeof(*cbb)); | 52 | memset(cbb, 0, sizeof(*cbb)); |
51 | 53 | ||
52 | if (initial_capacity > 0) { | 54 | if (initial_capacity == 0) |
53 | if ((buf = malloc(initial_capacity)) == NULL) | 55 | initial_capacity = CBB_INITIAL_SIZE; |
54 | return 0; | 56 | |
55 | } | 57 | if ((buf = malloc(initial_capacity)) == NULL) |
58 | return 0; | ||
56 | 59 | ||
57 | if (!cbb_init(cbb, buf, initial_capacity)) { | 60 | if (!cbb_init(cbb, buf, initial_capacity)) { |
58 | free(buf); | 61 | free(buf); |