zfree.c - libzahl - big integer library
(HTM) git clone git://git.suckless.org/libzahl
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
zfree.c (622B)
---
1 /* See LICENSE file for copyright and license details. */
2 #include "internals.h"
3
4
5 void
6 zfree(z_t a)
7 {
8 size_t i, x, j;
9 zahl_char_t **new;
10
11 if (unlikely(!a->chars))
12 return;
13
14 i = libzahl_msb_nz_zu(a->alloced);
15 j = libzahl_pool_n[i]++;
16
17 if (j == libzahl_pool_alloc[i]) {
18 x = j ? ((j * 3) >> 1) : 128;
19 new = realloc(libzahl_pool[i], x * sizeof(zahl_char_t *));
20 if (check(!new)) {
21 free(a->chars);
22 free(libzahl_pool[i]);
23 libzahl_pool_n[i] = 0;
24 libzahl_pool[i] = 0;
25 libzahl_pool_alloc[i] = 0;
26 return;
27 }
28 libzahl_pool[i] = new;
29 libzahl_pool_alloc[i] = x;
30 }
31
32 libzahl_pool[i][j] = a->chars;
33 }