Yeah, the program just crashed. It said it was a runtime error and was forced to close unexpectedly or something.
And yes, those examples are very similar to what I had and the only change I made was what you changed, changing the array into a pointer and allocating memory to it with calloc( ), and for some reason the crash went away. Maybe has something to do with how memory is allocated for arrays? I don't know. -----Original Message----- From: wireshark-dev-boun...@wireshark.org [mailto:wireshark-dev-boun...@wireshark.org] On Behalf Of Guy Harris Sent: Thursday, June 18, 2009 6:24 PM To: Developer support list for Wireshark Subject: Re: [Wireshark-dev] header field arrays On Jun 18, 2009, at 3:11 PM, Jonathan Walker (c) wrote: > It wasn't giving the specific error, which is why it was so hard to > debug. What non-specific error did it give? Did it crash? If so, could you get a stack trace? > It's not causing me problems anymore though. I made the array into > a pointer instead, and allocated the same amount of memory to the > pointer, and for some reason it fixed the problem. I.e. something like: static hf_register_info hf[MAX_FIELDS]; static int hf_ids[MAX_FIELDS]; ... for (i = 0; i < cur_field; i++) { hf[i].p_id = &hf_ids[i]; hf[i].hfinfo.name = human-readable name of i'th field; hf[i].hfinfo.abbrev = filter name of i'th field; hf[i].hfinfo.type = type of i'th field; hf[i].hfinfo.display = base (or whatever) of i'th field; hf[i].hfinfo.strings = true/false strings, or value strings, of i'th field, or NULL; hf[i].hfinfo.bitmask = bitmask of i'th field; hf[i].hfinfo.blurb = blurb of i'th field; } ... proto_register_field_array(proto_shsip, hf, cur_field); failed, but something like static hf_register_info *hf; static int hf_ids[MAX_FIELDS]; ... hf = g_malloc(MAX_FIELDS*sizeof (hf_register_info); for (i = 0; i < cur_field; i++) { hf[i].p_id = &hf_ids[i]; hf[i].hfinfo.name = human-readable name of i'th field; hf[i].hfinfo.abbrev = filter name of i'th field; hf[i].hfinfo.type = type of i'th field; hf[i].hfinfo.display = base (or whatever) of i'th field; hf[i].hfinfo.strings = true/false strings, or value strings, of i'th field, or NULL; hf[i].hfinfo.bitmask = bitmask of i'th field; hf[i].hfinfo.blurb = blurb of i'th field; } ... proto_register_field_array(proto_shsip, hf, cur_field); didn't fail? Note that something like static const hf_register_info hf[MAX_FIELDS]; ... will *NOT* work - you didn't make that array const, did you? ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe