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++)