Based on the name, this looks like memory that is only ever needed in the scope of dissection for a single packet. If that is the case, it should allocated in packet-scope when needed and not be global at all.
Evan On Thu, Sep 15, 2016 at 12:48 PM, Pascal Quantin <[email protected]> wrote: > Hi Paul, > > 2016-09-15 18:44 GMT+02:00 Paul Offord <[email protected]>: > >> My porting of TRANSUM from LUA to C continues. I now have a working >> dissector but I then read README.developer and noted the guidance regarding >> use of static buffers. I assume this applies to arrays too and so I’m now >> trying to convert the statically defined arrays to versions based on >> dynamic memory allocation. I’ve converted some string buffers and a simple >> gboolean array without problems. I then tried to convert an array of >> structures and this caused crashes all over the place. >> >> >> >> Before the conversion I had this as a global variable: >> >> >> >> PKT_INFO sub_packet[MAX_SUBPKTS_PER_PACKET]; >> >> >> >> I replaced this with a global variable: >> >> >> >> PKT_INFO *sub_packet; >> >> >> >> And this in my init function: >> >> >> >> sub_packet = (PKT_INFO *)wmem_alloc(wmem_file_scope(), >> (MAX_SUBPKTS_PER_PACKET * sizeof(PKT_INFO))); >> >> >> >> I subsequently use it like this: >> >> >> >> sub_packet[i].frame_number = 0; >> >> >> >> I seem to be getting memory corruption as a result of this change. Weird >> things happen, like I lose preference variables. >> >> >> >> What am I doing wrong here? >> > > File scope memory is automatically freed each time a preference is > changed, or a file is reloaded. If you need to keep some things persistent > during all Wireshark instance, consider using epan scope memory for those > variables instead. > > Regards, > Pascal. > > ____________________________________________________________ > _______________ > Sent via: Wireshark-dev mailing list <[email protected]> > Archives: https://www.wireshark.org/lists/wireshark-dev > Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev > mailto:[email protected]?subject= > unsubscribe >
___________________________________________________________________________ Sent via: Wireshark-dev mailing list <[email protected]> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev mailto:[email protected]?subject=unsubscribe
