diff options
| author | Tom Lane | 2003-12-17 20:15:53 +0000 |
|---|---|---|
| committer | Tom Lane | 2003-12-17 20:15:53 +0000 |
| commit | f79c36fc6f251958023a2c82f1dee8bfff8ba3c9 (patch) | |
| tree | c5f10a31979ce99095f3a2ba6ce16e97e95b9b3e /contrib | |
| parent | 5129070dfde66d5d899920b4c75372af102ea449 (diff) | |
Repair badly broken estimation of output buffer size in lquery_out().
Diffstat (limited to 'contrib')
| -rw-r--r-- | contrib/ltree/ltree_io.c | 9 |
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++) |
