mirror of
https://github.com/cathugger/mkp224o.git
synced 2025-05-05 04:40:35 +00:00
proper intfilter expansion, vec improvements
This commit is contained in:
parent
7a090d9ea6
commit
d8c8fba4d2
4 changed files with 111 additions and 52 deletions
48
vec.c
Normal file
48
vec.c
Normal file
|
@ -0,0 +1,48 @@
|
|||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include "vec.h"
|
||||
|
||||
void vec_add1(struct vec_basestruct *ctl,size_t sz)
|
||||
{
|
||||
if (!ctl->alen) {
|
||||
ctl->alen = 8;
|
||||
if (SIZE_MAX / 8 < sz)
|
||||
ctl->alen = 1;
|
||||
ctl->buf = malloc(ctl->alen * sz);
|
||||
if (!ctl->buf)
|
||||
abort();
|
||||
} else if (ctl->len >= ctl->alen) {
|
||||
ctl->alen *= 2;
|
||||
if (SIZE_MAX / ctl->alen < sz)
|
||||
abort();
|
||||
ctl->buf = realloc(ctl->buf,ctl->alen * sz);
|
||||
if (!ctl->buf)
|
||||
abort();
|
||||
}
|
||||
++ctl->len;
|
||||
}
|
||||
|
||||
void vec_addn(struct vec_basestruct *ctl,size_t sz,size_t n)
|
||||
{
|
||||
if (!ctl->alen)
|
||||
ctl->alen = 8;
|
||||
size_t nlen = ctl->alen;
|
||||
ctl->len += n;
|
||||
while (ctl->len > nlen)
|
||||
nlen *= 2;
|
||||
if (nlen > ctl->alen) {
|
||||
ctl->alen = nlen;
|
||||
if (SIZE_MAX / nlen < sz)
|
||||
abort();
|
||||
ctl->buf = realloc(ctl->buf,nlen * sz);
|
||||
if (!ctl->buf)
|
||||
abort();
|
||||
} else if (!ctl->buf) {
|
||||
if (SIZE_MAX / ctl->alen < sz)
|
||||
abort();
|
||||
ctl->buf = malloc(ctl->alen * sz);
|
||||
if (!ctl->buf)
|
||||
abort();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue