|
31 | 31 | #endif
|
32 | 32 |
|
33 | 33 |
|
34 |
| -#define SPACE_FOR(_b, _sz) \ |
35 |
| - (((ssize_t) (_b)->datalen - (ssize_t) (_b)->len) >= (ssize_t) (_sz)) |
| 34 | +static void |
| 35 | +make_space_for (mongoc_buffer_t *buffer, size_t data_size) |
| 36 | +{ |
| 37 | + if (buffer->len + data_size > buffer->datalen) { |
| 38 | + buffer->datalen = bson_next_power_of_two (buffer->len + data_size); |
| 39 | + buffer->data = (uint8_t *) buffer->realloc_func ( |
| 40 | + buffer->data, buffer->datalen, buffer->realloc_data); |
| 41 | + } |
| 42 | +} |
36 | 43 |
|
37 | 44 |
|
38 | 45 | /**
|
@@ -135,12 +142,7 @@ _mongoc_buffer_append (mongoc_buffer_t *buffer,
|
135 | 142 |
|
136 | 143 | BSON_ASSERT (buffer->datalen);
|
137 | 144 |
|
138 |
| - if (!SPACE_FOR (buffer, data_size)) { |
139 |
| - BSON_ASSERT ((buffer->datalen + data_size) < INT_MAX); |
140 |
| - buffer->datalen = bson_next_power_of_two (data_size + buffer->len); |
141 |
| - buffer->data = |
142 |
| - (uint8_t *) buffer->realloc_func (buffer->data, buffer->datalen, NULL); |
143 |
| - } |
| 145 | + make_space_for (buffer, data_size); |
144 | 146 |
|
145 | 147 | buf = &buffer->data[buffer->len];
|
146 | 148 |
|
@@ -186,12 +188,7 @@ _mongoc_buffer_append_from_stream (mongoc_buffer_t *buffer,
|
186 | 188 |
|
187 | 189 | BSON_ASSERT (buffer->datalen);
|
188 | 190 |
|
189 |
| - if (!SPACE_FOR (buffer, size)) { |
190 |
| - BSON_ASSERT ((buffer->datalen + size) < INT_MAX); |
191 |
| - buffer->datalen = bson_next_power_of_two (size + buffer->len); |
192 |
| - buffer->data = |
193 |
| - (uint8_t *) buffer->realloc_func (buffer->data, buffer->datalen, NULL); |
194 |
| - } |
| 191 | + make_space_for (buffer, size); |
195 | 192 |
|
196 | 193 | buf = &buffer->data[buffer->len];
|
197 | 194 |
|
@@ -260,11 +257,7 @@ _mongoc_buffer_fill (mongoc_buffer_t *buffer,
|
260 | 257 |
|
261 | 258 | min_bytes -= buffer->len;
|
262 | 259 |
|
263 |
| - if (!SPACE_FOR (buffer, min_bytes)) { |
264 |
| - buffer->datalen = bson_next_power_of_two (buffer->len + min_bytes); |
265 |
| - buffer->data = (uint8_t *) buffer->realloc_func ( |
266 |
| - buffer->data, buffer->datalen, buffer->realloc_data); |
267 |
| - } |
| 260 | + make_space_for (buffer, min_bytes); |
268 | 261 |
|
269 | 262 | avail_bytes = buffer->datalen - buffer->len;
|
270 | 263 |
|
@@ -341,12 +334,7 @@ _mongoc_buffer_try_append_from_stream (mongoc_buffer_t *buffer,
|
341 | 334 |
|
342 | 335 | BSON_ASSERT (buffer->datalen);
|
343 | 336 |
|
344 |
| - if (!SPACE_FOR (buffer, size)) { |
345 |
| - BSON_ASSERT ((buffer->datalen + size) < INT_MAX); |
346 |
| - buffer->datalen = bson_next_power_of_two (size + buffer->len); |
347 |
| - buffer->data = |
348 |
| - (uint8_t *) buffer->realloc_func (buffer->data, buffer->datalen, NULL); |
349 |
| - } |
| 337 | + make_space_for (buffer, size); |
350 | 338 |
|
351 | 339 | buf = &buffer->data[buffer->len];
|
352 | 340 |
|
|
0 commit comments