Skip to content

Commit a73dca1

Browse files
committed
assert future_wait called before future_destroy
1 parent 5d3d05f commit a73dca1

File tree

4 files changed

+8
-0
lines changed

4 files changed

+8
-0
lines changed

build/future_function_templates/future.c.template

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ future_wait (future_t *future)
9191
mongoc_mutex_unlock (&future->mutex);
9292

9393
if (resolved) {
94+
future->awaited = true;
95+
9496
/* free memory */
9597
mongoc_thread_join (future->thread);
9698
}
@@ -102,6 +104,7 @@ future_wait (future_t *future)
102104
void
103105
future_destroy (future_t *future)
104106
{
107+
assert (future->awaited);
105108
bson_free (future->argv);
106109
mongoc_cond_destroy (&future->cond);
107110
mongoc_mutex_destroy (&future->mutex);

build/future_function_templates/future.h.template

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
typedef struct
1212
{
1313
bool resolved;
14+
bool awaited;
1415
future_value_t return_value;
1516
int argc;
1617
future_value_t *argv;

tests/mock_server/future.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,8 @@ future_wait (future_t *future)
328328
mongoc_mutex_unlock (&future->mutex);
329329

330330
if (resolved) {
331+
future->awaited = true;
332+
331333
/* free memory */
332334
mongoc_thread_join (future->thread);
333335
}
@@ -339,6 +341,7 @@ future_wait (future_t *future)
339341
void
340342
future_destroy (future_t *future)
341343
{
344+
assert (future->awaited);
342345
bson_free (future->argv);
343346
mongoc_cond_destroy (&future->cond);
344347
mongoc_mutex_destroy (&future->mutex);

tests/mock_server/future.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
typedef struct
1818
{
1919
bool resolved;
20+
bool awaited;
2021
future_value_t return_value;
2122
int argc;
2223
future_value_t *argv;

0 commit comments

Comments
 (0)