Search Postgresql Archives

[C-function] Can SET_VARSIZE cause a memory leak?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I didn't find an easy way to convert ucs-2 bytea to utf-8, so I decided to write a C-function. Since ucs-2 is has fixed symbol size of 2 bytes the output bytea size may differ.

I do the following:

	bytea	    *result= (bytea *)  palloc0(VARSIZE(in_bytea)); // allocating memory for the result
	SET_VARSIZE(result, VARSIZE_ANY(in_bytea));
	
	... // some calculations resulting in `result` having some trailing 0-s (since palloc0 was used). We don't need those, so:
	
	SET_VARSIZE(result, new_varsize_result+VARHDRSZ); // new_varsize_result was calculated during the convertion

	PG_RETURN_BYTEA_P(result);

The question is am I leaking memory by doing this, and if I am, should I use pfree() manually on each address that is left trailing, or is there some other way to make this work?

Regards,
Nick.


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux