dyn0dyn.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:1k
- /******************************************************
- The dynamically allocated array
- (c) 1996 Innobase Oy
- Created 2/5/1996 Heikki Tuuri
- *******************************************************/
- #include "dyn0dyn.h"
- #ifdef UNIV_NONINL
- #include "dyn0dyn.ic"
- #endif
- /****************************************************************
- Adds a new block to a dyn array. */
- dyn_block_t*
- dyn_array_add_block(
- /*================*/
- /* out: created block */
- dyn_array_t* arr) /* in: dyn array */
- {
- mem_heap_t* heap;
- dyn_block_t* block;
- ut_ad(arr);
- ut_ad(arr->magic_n == DYN_BLOCK_MAGIC_N);
- if (arr->heap == NULL) {
- UT_LIST_INIT(arr->base);
- UT_LIST_ADD_FIRST(list, arr->base, arr);
- arr->heap = mem_heap_create(sizeof(dyn_block_t));
- }
- block = dyn_array_get_last_block(arr);
- block->used = block->used | DYN_BLOCK_FULL_FLAG;
- heap = arr->heap;
- block = mem_heap_alloc(heap, sizeof(dyn_block_t));
- block->used = 0;
- UT_LIST_ADD_LAST(list, arr->base, block);
- return(block);
- }