Skip to content
Snippets Groups Projects
Commit 6000e328 authored by Bruce Momjian's avatar Bruce Momjian
Browse files

I've not changed any malloc/calloc to palloc. It looks to me that these memory

areas are for the lifetime of the backend and in the interests of not breaking
something that's not broken I left alone.

Note for anyone reading this and wanting it for tsearch-v2-stable (i.e. for 7.3
backend) this patch probably will not apply cleanly to that source. It should
be simple enough to see what's going on and apply the changes by hand if need
be.


--
Nigel J. Andrews
parent 4b4c43b1
No related branches found
No related tags found
No related merge requests found
...@@ -6,39 +6,63 @@ extern struct SN_env * ...@@ -6,39 +6,63 @@ extern struct SN_env *
SN_create_env(int S_size, int I_size, int B_size) SN_create_env(int S_size, int I_size, int B_size)
{ {
struct SN_env *z = (struct SN_env *) calloc(1, sizeof(struct SN_env)); struct SN_env *z = (struct SN_env *) calloc(1, sizeof(struct SN_env));
struct SN_env *z2 = z;
if (!z)
return z;
z->p = create_s(); z->p = create_s();
if (S_size) if (!z->p)
z = NULL;
if (z && S_size)
{ {
z->S = (symbol * *) calloc(S_size, sizeof(symbol *)); if ((z->S = (symbol * *) calloc(S_size, sizeof(symbol *))))
{ {
int i; int i;
for (i = 0; i < S_size; i++) for (i = 0; i < S_size; i++)
z->S[i] = create_s(); {
if (!(z->S[i] = create_s()))
{
z = NULL;
break;
}
} }
z->S_size = S_size; z2->S_size = i;
}
else
z = NULL;
} }
if (I_size) if (z && I_size)
{ {
z->I = (int *) calloc(I_size, sizeof(int)); z->I = (int *) calloc(I_size, sizeof(int));
if (z->I)
z->I_size = I_size; z->I_size = I_size;
else
z = NULL;
} }
if (B_size) if (z && B_size)
{ {
z->B = (symbol *) calloc(B_size, sizeof(symbol)); z->B = (symbol *) calloc(B_size, sizeof(symbol));
if (z->B)
z->B_size = B_size; z->B_size = B_size;
else
z = NULL;
} }
if (!z)
SN_close_env(z2);
return z; return z;
} }
extern void extern void
SN_close_env(struct SN_env * z) SN_close_env(struct SN_env * z)
{ {
if (z->S_size) if (z->S && z->S_size)
{ {
{ {
int i; int i;
... ...
......
...@@ -14,6 +14,8 @@ create_s(void) ...@@ -14,6 +14,8 @@ create_s(void)
{ {
symbol *p = (symbol *) (HEAD + (char *) malloc(HEAD + (CREATE_SIZE + 1) * sizeof(symbol))); symbol *p = (symbol *) (HEAD + (char *) malloc(HEAD + (CREATE_SIZE + 1) * sizeof(symbol)));
if (p == (symbol *) (HEAD))
return NULL;
CAPACITY(p) = CREATE_SIZE; CAPACITY(p) = CREATE_SIZE;
SET_SIZE(p, CREATE_SIZE); SET_SIZE(p, CREATE_SIZE);
return p; return p;
... ...
......
...@@ -112,6 +112,9 @@ init_cfg(Oid id, TSCfgInfo * cfg) ...@@ -112,6 +112,9 @@ init_cfg(Oid id, TSCfgInfo * cfg)
cfg->map[lexid].len = ARRNELEMS(a); cfg->map[lexid].len = ARRNELEMS(a);
cfg->map[lexid].dict_id = (Datum *) malloc(sizeof(Datum) * cfg->map[lexid].len); cfg->map[lexid].dict_id = (Datum *) malloc(sizeof(Datum) * cfg->map[lexid].len);
if (!cfg->map[lexid].dict_id)
ts_error(ERROR, "No memory");
memset(cfg->map[lexid].dict_id, 0, sizeof(Datum) * cfg->map[lexid].len); memset(cfg->map[lexid].dict_id, 0, sizeof(Datum) * cfg->map[lexid].len);
ptr = (text *) ARR_DATA_PTR(a); ptr = (text *) ARR_DATA_PTR(a);
oldcontext = MemoryContextSwitchTo(TopMemoryContext); oldcontext = MemoryContextSwitchTo(TopMemoryContext);
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment