Hi Daniel,

if i understand it correctly, it is safe to call  pv_value_destroy after 
assigning the $var(..) in module code.

i still have doubt on when and how to free the result of a transform returned 
value.

in script
if( $(myPvar{my.mytransform,transformParameter}) =="test value") {
 $var(x) = $(myPvar{my.mytransform,transformParameter});
}

in module i assign the returned value of transform with dst_val->flags = 
PV_VAL_STR | PV_VAL_PKG;
since this line "if( $(myPvar{my.mytransform,transformParameter}) =="test 
value") {" is allocating memory, will it be freed by script with 
pv_value_destroy  ?
this line "$var(x) = $(myPvar{my.mytransform,transformParameter});" assigns the 
returned value to a variable, will the script free the right side of the 
expression ? will it use pv_value_destroy  ?


Thanks


________________________________
From: sr-dev [[email protected]] on behalf of 
Daniel-Constantin Mierla [[email protected]]
Sent: Monday, January 05, 2015 3:59 AM
To: Kamailio (SER) - Development Mailing List
Subject: Re: [sr-dev] need help understanding pv_value_destroy

Hello,

if you assign to a $var(...), it makes a deep copy in pkg memory. It is up to 
you to handle further the content of dst_val and free it properly.

If you set the PV_VAL_PKG (value must be in a pkg_malloc() pointer) or 
PV_VAL_SHM (value must be in a shm_malloc() pointer) for dst_val, then you can 
call pv_value_destroy() to get it freed. But it is not necessary, if you free 
it in the code yourself.

Cheers,
Daniel

On 04/01/15 12:36, Luis Azedo wrote:
Hi Daniel,

can you help on this ?

________________________________
From: sr-dev 
[[email protected]<mailto:[email protected]>]
 on behalf of Luis Azedo [[email protected]<mailto:[email protected]>]
Sent: Wednesday, December 31, 2014 4:19 AM
To: [email protected]<mailto:[email protected]>
Subject: [sr-dev] need help understanding pv_value_destroy

Hi,

in some function that return a value with PV_VAL_PKG or PV_VAL_SHM, the 
allocated memory is supposed to be freed by core ?

script example

my_function("some param","$var(result)");

in code =>
dst_val->flags = PV_VAL_STR | PV_VAL_PKG;
dst_pv->setf(msg, &dst_pv->pvp, (int)EQ_T, &dst_val);

when $var(result) is freed, will it free the allocated string ?


if( $(myPvar{my.mytransform,transformParameter}) == $null) {
 $var(x) = $(myPvar{my.mytransform,transformParameter});
}

in code =>
dst_val->flags = PV_VAL_STR | PV_VAL_PKG;

will the memory allocated be freed  in the comparison line ?
will the memory allocated be freed  when $var(x) is freed ?

thank you




_______________________________________________
sr-dev mailing list
[email protected]<mailto:[email protected]>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev



--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to