Wireshark-dev: Re: [Wireshark-dev] Using global variables to store dissection?information
From: Jeff Morriss <[email protected]>
Date: Thu, 10 May 2012 17:12:50 -0400
Jakub Zawadzki wrote:
On Wed, May 09, 2012 at 02:57:45PM +0000, Christopher Maynard wrote:
Jakub Zawadzki <[email protected]> writes:

There's already packet_info structure which is always private for current
dissection. The easiest fix would be to move all global variables to packet_info structure. Anyone against it?
From Guy's comments I got the feeling that the packet_info "katamari" was
already too big and that there was a desire to reduce its size, not increase it.
It can be one member:
  void *current_proto_data;

Another solution would require adding extra parameter to dissect_ subroutines.
It's much more work and I'm afraid it's not easy to do in generated dissectors
(like ASN.1 ones).

I can live when people use global variables ;)
But it's much easier to hit bugs when you forgot to register cleanup function.

Primarly I wanted to know if we can decide on some global policy:
If it's ok to use global variables or not? What should be used instead of them we can disscuss later.
I think the policy is: it's not a good idea, it should be avoided (in 
case one day the dream of a thread-safe libwireshark comes true), but it 
(generally) can't be completely avoided until we give dissector writers 
a way to store global (eventually per-thread) data.  If you build it 
(the API), they will come (use it). ;-)