Skip to content

Commit c0e9dc1

Browse files
committed
plpgsql_dstring_append was broken for long strings.
1 parent 846429e commit c0e9dc1

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/pl/plpgsql/src/pl_funcs.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* procedural language
44
*
55
* IDENTIFICATION
6-
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_funcs.c,v 1.17 2001/11/15 23:31:09 tgl Exp $
6+
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_funcs.c,v 1.18 2002/05/05 17:38:26 tgl Exp $
77
*
88
* This software is copyrighted by Jan Wieck - Hamburg.
99
*
@@ -64,6 +64,7 @@ plpgsql_dstring_init(PLpgSQL_dstring * ds)
6464
{
6565
ds->value = palloc(ds->alloc = 512);
6666
ds->used = 0;
67+
ds->value[0] = '\0';
6768
}
6869

6970

@@ -86,10 +87,14 @@ void
8687
plpgsql_dstring_append(PLpgSQL_dstring * ds, char *str)
8788
{
8889
int len = strlen(str);
90+
int needed = ds->used + len + 1;
8991

90-
if (ds->used + len + 1 > ds->alloc)
92+
if (needed > ds->alloc)
9193
{
92-
ds->alloc *= 2;
94+
/* might have to double more than once, if len is large */
95+
do {
96+
ds->alloc *= 2;
97+
} while (needed > ds->alloc);
9398
ds->value = repalloc(ds->value, ds->alloc);
9499
}
95100

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy