MCPcopy Create free account
hub / github.com/MariaDB/server / alloc_dynamic

Function alloc_dynamic

mysys/array.c:162–198  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

160*/
161
162void *alloc_dynamic(DYNAMIC_ARRAY *array)
163{
164 DBUG_ENTER("alloc_dynamic");
165
166 DBUG_ASSERT(array->size_of_element); /* Ensure init() is called */
167 if (array->elements == array->max_element)
168 {
169 char *new_ptr;
170 if (array->malloc_flags & MY_INIT_BUFFER_USED)
171 {
172 /*
173 In this scenario, the buffer is statically preallocated,
174 so we have to create an all-new malloc since we overflowed
175 */
176 if (!(new_ptr= (char *) my_malloc(array->m_psi_key,
177 (array->max_element+
178 array->alloc_increment) *
179 array->size_of_element,
180 MYF(array->malloc_flags | MY_WME))))
181 DBUG_RETURN(0);
182 if (array->elements)
183 memcpy(new_ptr, array->buffer,
184 array->elements * array->size_of_element);
185 array->malloc_flags&= ~MY_INIT_BUFFER_USED;
186 }
187 else if (!(new_ptr=(char*)
188 my_realloc(array->m_psi_key, array->buffer,
189 (array->max_element+ array->alloc_increment) *
190 array->size_of_element,
191 MYF(MY_WME | MY_ALLOW_ZERO_PTR |
192 array->malloc_flags))))
193 DBUG_RETURN(0);
194 array->buffer= (uchar*) new_ptr;
195 array->max_element+=array->alloc_increment;
196 }
197 DBUG_RETURN(array->buffer+(array->elements++ * array->size_of_element));
198}
199
200
201/*

Callers 8

choose_threadMethod · 0.85
insert_dynamicFunction · 0.85
append_dynamicFunction · 0.85
my_hash_insertFunction · 0.85
find_all_keysFunction · 0.85
find_all_keysFunction · 0.85
thr_find_all_keys_execFunction · 0.85

Calls 2

my_mallocFunction · 0.85
my_reallocFunction · 0.85

Tested by

no test coverage detected