fix random crashes upon !reload

A struct plugin_hub_internals was falsely casted to struct
plugin_callback_data. This caused the contained commands list pointer to point to
a struct hub_info and commands->size took the value of a pointer to a struct
net_connection. Since size is increased/decreased every time an item is
added to/removed from the list, this resulted in some funny crashes.

This fix is a little dirty as it exports some internals.
This commit is contained in:
Tilka
2012-04-21 09:22:06 +02:00
parent 832277f653
commit c5036a3ff8
4 changed files with 21 additions and 25 deletions

View File

@@ -23,14 +23,7 @@
struct plugin_callback_data;
struct plugin_hub_internals
{
struct hub_info* hub;
plugin_unregister_f unregister; /* The unregister function. */
struct plugin_callback_data* callback_data; /* callback data that is unique for the plugin */
};
static struct plugin_hub_internals* get_internals(struct plugin_handle* handle)
struct plugin_hub_internals* get_internals(struct plugin_handle* handle)
{
struct plugin_hub_internals* internals;
assert(handle && handle->handle && handle->handle->internals);