Hi,
Do you want to say that octstr_create_from_data doesn't allocate memory?
I don't think so.
lijl wrote:
i think there is no memory leak.
1.about set_refer_url()
sm->referer_url = octstr_duplicate(url);
2. about octstr.h
#define octstr_duplicate(ostr) gw_claim_area(octstr_duplicate_real((ostr)))
3.about octstr.h
Octstr *octstr_duplicate_real(Octstr *ostr)
{
if (ostr == NULL)
return NULL;
seems_valid(ostr);
return octstr_create_from_data(ostr->data, ostr->len);
}
4.about octstr.h
#define octstr_create_from_data(data, len)\
gw_claim_area(octstr_create_from_data_real((data), (len)))
5about octstr.h
Octstr *octstr_create_from_data_real(const char *data, long len)
{
Octstr *ostr;
gw_assert(len >= 0);
if (data == NULL)
gw_assert(len == 0);
ostr = gw_malloc(sizeof(*ostr));
if (len == 0) {
ostr->len = 0;
ostr->size = 0;
ostr->data = NULL;
} else {
ostr->len = len;
ostr->size = len + 1;
ostr->data = gw_malloc(ostr->size);
Allocate memory.
memcpy(ostr->data, data, len);
ostr->data[len] = '\0';
}
ostr->immutable = 0;
seems_valid(ostr);
return ostr;
}
6about gwmem.h
#define gw_claim_area(ptr) (gw_native_noop(ptr))
7about gwmem_native.c
void *gw_native_noop(void *ptr) { return ptr; }
this is memory allocated to url.
----------------------------------------------------------------
So after set_refer_url we get new allocated octstr that has
the only refernece: sm->referer_url
8. in wap_app.c function return_reply()
octstr_destroy(url); /* same as content.url */
this is memory free.
Yes, url is destroyed, but sm->referer_url not.
--
Vjacheslav Chekushin mailto:[EMAIL PROTECTED]
Latvian Mobile Phone Company http://www.lmt.lv