00001 /****************************************************** 00002 The dynamically allocated array 00003 00004 (c) 1996 Innobase Oy 00005 00006 Created 2/5/1996 Heikki Tuuri 00007 *******************************************************/ 00008 00009 #include "dyn0dyn.h" 00010 #ifdef UNIV_NONINL 00011 #include "dyn0dyn.ic" 00012 #endif 00013 00014 /**************************************************************** 00015 Adds a new block to a dyn array. */ 00016 00017 dyn_block_t* 00018 dyn_array_add_block( 00019 /*================*/ 00020 /* out: created block */ 00021 dyn_array_t* arr) /* in: dyn array */ 00022 { 00023 mem_heap_t* heap; 00024 dyn_block_t* block; 00025 00026 ut_ad(arr); 00027 ut_ad(arr->magic_n == DYN_BLOCK_MAGIC_N); 00028 00029 if (arr->heap == NULL) { 00030 UT_LIST_INIT(arr->base); 00031 UT_LIST_ADD_FIRST(list, arr->base, arr); 00032 00033 arr->heap = mem_heap_create(sizeof(dyn_block_t)); 00034 } 00035 00036 block = dyn_array_get_last_block(arr); 00037 block->used = block->used | DYN_BLOCK_FULL_FLAG; 00038 00039 heap = arr->heap; 00040 00041 block = mem_heap_alloc(heap, sizeof(dyn_block_t)); 00042 00043 block->used = 0; 00044 00045 UT_LIST_ADD_LAST(list, arr->base, block); 00046 00047 return(block); 00048 }
1.4.7

