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

Поиск
Список
Период
Сортировка
От Николай Бабаджанян
Тема [C-function] Can SET_VARSIZE cause a memory leak?
Дата
Msg-id 1019310536.5581.1465386449497.JavaMail.zimbra@cobra.ru
обсуждение исходный текст
Ответы Re: Can SET_VARSIZE cause a memory leak?  (Albe Laurenz <laurenz.albe@wien.gv.at>)
Список pgsql-general
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
symbolsize 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
lefttrailing, or is there some other way to make this work? 

Regards,
Nick.


В списке pgsql-general по дате отправления:

Предыдущее
От: Artur Zakirov
Дата:
Сообщение: Re: [pg_trgm] Making similarity(?, ?) < ? use an index
Следующее
От: Albe Laurenz
Дата:
Сообщение: Re: Can SET_VARSIZE cause a memory leak?