Lines 4-27
Link Here
|
4 |
#define GEN_ALLOC_ready(ta,type,field,len,a,i,n,x,base,ta_ready) \ |
4 |
#define GEN_ALLOC_ready(ta,type,field,len,a,i,n,x,base,ta_ready) \ |
5 |
int ta_ready(x,n) register ta *x; register unsigned int n; \ |
5 |
int ta_ready(x,n) register ta *x; register unsigned int n; \ |
6 |
{ register unsigned int i; \ |
6 |
{ register unsigned int i; \ |
|
|
7 |
unsigned int nlen; \ |
7 |
if (x->field) { \ |
8 |
if (x->field) { \ |
8 |
i = x->a; \ |
9 |
i = x->a; \ |
9 |
if (n > i) { \ |
10 |
if (n > i) { \ |
10 |
x->a = base + n + (n >> 3); \ |
11 |
unsigned int nnum; \ |
11 |
if (alloc_re(&x->field,i * sizeof(type),x->a * sizeof(type))) return 1; \ |
12 |
if (__builtin_add_overflow(base, n, &nlen)) \ |
|
|
13 |
return 0; \ |
14 |
if (__builtin_add_overflow(nlen, n >> 3, &nlen)) \ |
15 |
return 0; \ |
16 |
if (__builtin_mul_overflow(nlen, sizeof(type), &nnum)) \ |
17 |
return 0; \ |
18 |
x->a = nlen; \ |
19 |
if (alloc_re(&x->field,i * sizeof(type),nnum)) return 1; \ |
12 |
x->a = i; return 0; } \ |
20 |
x->a = i; return 0; } \ |
13 |
return 1; } \ |
21 |
return 1; } \ |
14 |
x->len = 0; \ |
22 |
x->len = 0; \ |
15 |
return !!(x->field = (type *) alloc((x->a = n) * sizeof(type))); } |
23 |
return !!(x->field = (type *) alloc((x->a = n) * sizeof(type))); } |
16 |
|
24 |
|
17 |
#define GEN_ALLOC_readyplus(ta,type,field,len,a,i,n,x,base,ta_rplus) \ |
25 |
#define GEN_ALLOC_readyplus(ta,type,field,len,a,i,n,x,base,ta_rplus) \ |
18 |
int ta_rplus(x,n) register ta *x; register unsigned int n; \ |
26 |
int ta_rplus(x,n) register ta *x; unsigned int n; \ |
19 |
{ register unsigned int i; \ |
27 |
{ register unsigned int i; \ |
20 |
if (x->field) { \ |
28 |
if (x->field) { \ |
21 |
i = x->a; n += x->len; \ |
29 |
i = x->a; n += x->len; \ |
|
|
30 |
if (__builtin_add_overflow(n, x->len, &n)) \ |
31 |
return 0; \ |
22 |
if (n > i) { \ |
32 |
if (n > i) { \ |
23 |
x->a = base + n + (n >> 3); \ |
33 |
unsigned int nlen, nnum; \ |
24 |
if (alloc_re(&x->field,i * sizeof(type),x->a * sizeof(type))) return 1; \ |
34 |
if (__builtin_add_overflow(base, n, &nlen)) \ |
|
|
35 |
return 0; \ |
36 |
if (__builtin_add_overflow(nlen, n >> 3, &nlen)) \ |
37 |
return 0; \ |
38 |
if (__builtin_mul_overflow(nlen, sizeof(type), &nnum)) \ |
39 |
return 0; \ |
40 |
x->a = nlen; \ |
41 |
if (alloc_re(&x->field,i * sizeof(type),nnum)) return 1; \ |
25 |
x->a = i; return 0; } \ |
42 |
x->a = i; return 0; } \ |
26 |
return 1; } \ |
43 |
return 1; } \ |
27 |
x->len = 0; \ |
44 |
x->len = 0; \ |
28 |
- |
|
|