If I've done a palloc() to get storage inside a user-defined function and raise an error using ereport(), should I be using pfree() to release the storage before the ereport()? Consider this example in C: PG_FUNCTION_INFO_V1(Example); Datum Example(PG_FUNCTION_ARGS) { VarChar* pstring=PG_GETARG_VARCHAR_P(0); VarChar* ret=NULL; int len = VARSIZE(pstring) - VARHDRSZ; char *string=palloc(len+1); memcpy(string, VARDATA(pstring), len); string[len] = '\0'; /* ... */ if ( /* some bad condition */ ) { ereport(ERROR, (errcode(ERRCODE_DATA_EXCEPTION), errmsg("some bad condition occurred!"))); } /* ... */ pfree(string); if (ret == NULL) PG_RETURN_NULL(); else PG_RETURN_VARCHAR_P(ret); } I only have the pfree() at the end before the return if there is no error. If I fail to call pfree() before ereport(), do I have a memory leak? -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general