StringInfo misc. issues

From: NikhilS <nikkhils(at)gmail(dot)com>
To: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: StringInfo misc. issues
Date: 2007-08-29 14:40:47
Message-ID: d3c4af540708290740m2ac46220k608bd96b409f4c6c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

I palloc0'ed a variable of type StringInfo and without doing an
initStringInfo() (forgot to do it i.e.) tried to append some stuff to it
using appendStringInfo(). It went into a tight loop within the function
enlargeStringInfo() at:

while (needed > newlen)

Must be a common enough case for a palloc0'ed field right?

The attached patch should fix this.

*** 226,232 ****
! if (needed < 0 ||
((Size) needed) >= (MaxAllocSize - (Size) str->len))
elog(ERROR, "invalid string enlargement request size %d",
needed);
--- 226,232 ----
! if (needed <= 0 ||
((Size) needed) >= (MaxAllocSize - (Size) str->len))
elog(ERROR, "invalid string enlargement request size %d",
needed);

I also found the absence of a function like resetStringInfo() a bit
puzzling. A found a lot of places where the code was resetting the "len"
field to 0 and assigning '\0' to the data field to reset the variable. This
seems to be the only missing API which will be needed while working with the
StringInfo type.

Regards,
Nikhils

--
EnterpriseDB http://www.enterprisedb.com

Attachment Content-Type Size
StringInfomisc.patch text/x-patch 1.9 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2007-08-29 14:42:55 Re: Dictionary chaining and stop words
Previous Message Andrew Dunstan 2007-08-29 14:34:14 Re: initdb failed on Windows 2000