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


Reply via email to