]> granicus.if.org Git - postgresql/commitdiff
Repair badly broken estimation of output buffer size in lquery_out().
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 17 Dec 2003 20:15:41 +0000 (20:15 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 17 Dec 2003 20:15:41 +0000 (20:15 +0000)
contrib/ltree/ltree_io.c

index 62c033cc5df61a63fc078a7e67503571d7a501ad..99803059f0fade9749dc652eb2d7ecacc0e450cf 100644 (file)
@@ -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++)