aboutsummaryrefslogtreecommitdiff
path: root/contrib/btree_gist/btree_text.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-08-21 00:09:10 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-08-21 00:09:10 +0000
commit86d78021a403738f9a6a647fa327d7e7871aa11c (patch)
tree1fb49806c7098da3619970446dac637ff45f2463 /contrib/btree_gist/btree_text.c
parentbf9d9bd2f3a00bc5f01e56e70f46bf21815411f8 (diff)
downloadpostgresql-86d78021a403738f9a6a647fa327d7e7871aa11c.tar.gz
postgresql-86d78021a403738f9a6a647fa327d7e7871aa11c.zip
Whack btree_gist code around until it has some small hope of building
on non-gcc compilers.
Diffstat (limited to 'contrib/btree_gist/btree_text.c')
-rw-r--r--contrib/btree_gist/btree_text.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/contrib/btree_gist/btree_text.c b/contrib/btree_gist/btree_text.c
index 0ce847369e2..fac9f554c0f 100644
--- a/contrib/btree_gist/btree_text.c
+++ b/contrib/btree_gist/btree_text.c
@@ -65,13 +65,15 @@ static bytea *
gbt_text_xfrm ( bytea * leaf )
{
bytea * out = leaf;
-
int32 ilen = VARSIZE (leaf) - VARHDRSZ;
int32 olen ;
- char sin[ilen+1];
- char * sou = NULL;
- memcpy ( (void*)&sin[0], (void*) VARDATA(leaf) ,ilen );
+ char * sin;
+ char * sou;
+
+ sin = palloc(ilen + 1);
+ memcpy (sin, (void*) VARDATA(leaf) ,ilen );
sin[ilen] = '\0';
+
olen = strxfrm ( NULL, &sin[0], 0 ) + 1;
sou = palloc ( olen );
olen = strxfrm ( sou , &sin[0] , olen );
@@ -80,7 +82,9 @@ gbt_text_xfrm ( bytea * leaf )
out->vl_len = olen+1;
memcpy( (void*) VARDATA(out), sou, olen-VARHDRSZ );
((char*)out)[olen] = '\0';
+
pfree(sou);
+ pfree(sin);
return out;
}