summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorTom Lane2003-12-17 20:15:53 +0000
committerTom Lane2003-12-17 20:15:53 +0000
commitf79c36fc6f251958023a2c82f1dee8bfff8ba3c9 (patch)
treec5f10a31979ce99095f3a2ba6ce16e97e95b9b3e /contrib
parent5129070dfde66d5d899920b4c75372af102ea449 (diff)
Repair badly broken estimation of output buffer size in lquery_out().
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ltree/ltree_io.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/contrib/ltree/ltree_io.c b/contrib/ltree/ltree_io.c
index 62c033cc5df..99803059f0f 100644
--- a/contrib/ltree/ltree_io.c
+++ b/contrib/ltree/ltree_io.c
@@ -498,22 +498,21 @@ lquery_out(PG_FUNCTION_ARGS)
*ptr;
int i,
j,
- totallen = 0;
+ totallen = 1;
lquery_level *curqlevel;
lquery_variant *curtlevel;
curqlevel = LQUERY_FIRST(in);
for (i = 0; i < in->numlevel; i++)
{
+ totallen++;
if (curqlevel->numvar)
- totallen = (curqlevel->numvar * 4) + 1 + curqlevel->totallen;
+ totallen += 1 + (curqlevel->numvar * 4) + curqlevel->totallen;
else
- totallen = 2 * 11 + 4;
- totallen++;
+ totallen += 2 * 11 + 4;
curqlevel = LQL_NEXT(curqlevel);
}
-
ptr = buf = (char *) palloc(totallen);
curqlevel = LQUERY_FIRST(in);
for (i = 0; i < in->numlevel; i++)