diff options
Diffstat (limited to 'mysys')
-rw-r--r--[-rwxr-xr-x] | mysys/COPYING.LIB | 0 | ||||
-rw-r--r-- | mysys/queues.c | 18 |
2 files changed, 18 insertions, 0 deletions
diff --git a/mysys/COPYING.LIB b/mysys/COPYING.LIB index eb685a5ec98..eb685a5ec98 100755..100644 --- a/mysys/COPYING.LIB +++ b/mysys/COPYING.LIB diff --git a/mysys/queues.c b/mysys/queues.c index f33856b892d..40aa3c8db53 100644 --- a/mysys/queues.c +++ b/mysys/queues.c @@ -21,6 +21,7 @@ */ #include "mysys_priv.h" +#include "mysys_err.h" #include <queues.h> @@ -43,6 +44,23 @@ int init_queue(QUEUE *queue, uint max_elements, uint offset_to_key, DBUG_RETURN(0); } +int reinit_queue(QUEUE *queue, uint max_elements, uint offset_to_key, + pbool max_at_top, int (*compare) (void *, byte *, byte *), + void *first_cmp_arg) +{ + DBUG_ENTER("reinit_queue"); + if (queue->max_elements < max_elements) + /* It's real easy to do realloc here, just don't want to bother */ + DBUG_RETURN(my_errno=EE_OUTOFMEMORY); + + queue->elements=0; + queue->compare=compare; + queue->first_cmp_arg=first_cmp_arg; + queue->offset_to_key=offset_to_key; + queue->max_at_top= max_at_top ? (-1 ^ 1) : 0; + DBUG_RETURN(0); +} + void delete_queue(QUEUE *queue) { DBUG_ENTER("delete_queue"); |