52
52
_mongoc_buffer_init (mongoc_buffer_t * buffer ,
53
53
uint8_t * buf ,
54
54
size_t buflen ,
55
- bson_realloc_func realloc_func )
55
+ bson_realloc_func realloc_func ,
56
+ void * realloc_data )
56
57
{
57
58
bson_return_if_fail (buffer );
58
59
bson_return_if_fail (buflen || !buf );
@@ -76,6 +77,7 @@ _mongoc_buffer_init (mongoc_buffer_t *buffer,
76
77
buffer -> len = 0 ;
77
78
buffer -> off = 0 ;
78
79
buffer -> realloc_func = realloc_func ;
80
+ buffer -> realloc_data = realloc_data ;
79
81
}
80
82
81
83
@@ -91,7 +93,7 @@ _mongoc_buffer_destroy (mongoc_buffer_t *buffer)
91
93
bson_return_if_fail (buffer );
92
94
93
95
if (buffer -> data && buffer -> realloc_func ) {
94
- buffer -> realloc_func (buffer -> data , 0 , NULL );
96
+ buffer -> realloc_func (buffer -> data , 0 , buffer -> realloc_data );
95
97
}
96
98
97
99
memset (buffer , 0 , sizeof * buffer );
@@ -209,8 +211,8 @@ _mongoc_buffer_fill (mongoc_buffer_t *buffer,
209
211
bson_return_val_if_fail (stream , false);
210
212
bson_return_val_if_fail (min_bytes >= 0 , false);
211
213
212
- BSON_ASSERT (buffer -> data );
213
- BSON_ASSERT (buffer -> datalen );
214
+ BSON_ASSERT (buffer -> data );
215
+ BSON_ASSERT (buffer -> datalen );
214
216
215
217
if (min_bytes <= buffer -> len ) {
216
218
RETURN (buffer -> len );
@@ -226,7 +228,8 @@ _mongoc_buffer_fill (mongoc_buffer_t *buffer,
226
228
227
229
if (!SPACE_FOR (buffer , min_bytes )) {
228
230
buffer -> datalen = bson_next_power_of_two ((uint32_t )(buffer -> len + min_bytes ));
229
- buffer -> data = bson_realloc (buffer -> data , buffer -> datalen );
231
+ buffer -> data = buffer -> realloc_func (buffer -> data , buffer -> datalen ,
232
+ buffer -> realloc_data );
230
233
}
231
234
232
235
avail_bytes = buffer -> datalen - buffer -> len ;
0 commit comments