2011/5/1 Guy Harris <[email protected]>:
>
> On May 1, 2011, at 4:51 AM, Max wrote:
>
>> I'm writing a dissector for a TCP-based protocol. I have a
>> conversation state object of my proto which is managed by
>> conversation_*_proto_data(). The state object is alloced by
>> se_alloc(), so it has a lifetime of capture, but the object itself
>> contains libgcrypt handles which are alloced by g_malloc. How should I
>> free these handles? Is there any mean to catch the moment when my
>> state object is about to be destroyed?
>
> If you register a routine with register_init_routine() (the routine takes no 
> arguments and returns no value), it will be called *after* all the 
> se_alloc()ated memory is freed.  Will that suffice?

Well, the handles to the allocated resources are stored *in* the
se_alloc()ated memory. So a callback which is called just after it is
freed is pretty much useless.

From the other side I can store the handles in two places:
1) in the conversation's state object where I use them;
2) in some global list of allocated resources which is read and
deallocated in the routine you've described.

But am I the only guy who finds this ugly? In this situation  it would
be perfect if se_alloc() engine could call a callback with a user
supplied argument before it starts to deallocate anything.

--
Max
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <[email protected]>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:[email protected]?subject=unsubscribe

Reply via email to