diff --git a/docs/reference/gobject/tmpl/gtypemodule.sgml b/docs/reference/gobject/tmpl/gtypemodule.sgml index b3828a5d7..d41446569 100644 --- a/docs/reference/gobject/tmpl/gtypemodule.sgml +++ b/docs/reference/gobject/tmpl/gtypemodule.sgml @@ -111,11 +111,16 @@ Sets the name for a #GTypeModule Looks up or registers a type that is implemented with a particular -type plugin. If a type with name @type_name is already registered, +type plugin. If a type with name @type_name was previously registered, the #GType identifier for the type is returned, otherwise the type is newly registered, and the resulting #GType identifier returned. +When reregistering a type (typically because a module is unloaded +then reloaded, and reinitialized), @module and @parent_type must +be the same as they were previously. + + As long as any instances of the type exist, the type plugin will not be unloaded. @@ -125,7 +130,7 @@ not be unloaded. @type_name: name for the type @type_info: type information structure @flags: flags field providing details about the type -@Returns: the type ID for the class. +@Returns: the new or existing type ID diff --git a/gobject/ChangeLog b/gobject/ChangeLog index 2e37f1dc1..81e3983b7 100644 --- a/gobject/ChangeLog +++ b/gobject/ChangeLog @@ -1,3 +1,9 @@ +Mon Aug 25 14:16:48 2003 Owen Taylor + + * gtypemodule.c (g_type_module_register_type): Clarify + docs on the return. Fix a memory leak if a type with a + value table is reloaded. + Tue Aug 19 05:21:04 2003 Tim Janik * testgobject.c (main): check private instance data after diff --git a/gobject/gtypemodule.c b/gobject/gtypemodule.c index e8fd4a7f8..b80b0c45e 100644 --- a/gobject/gtypemodule.c +++ b/gobject/gtypemodule.c @@ -316,6 +316,9 @@ g_type_module_register_type (GTypeModule *module, parent_type_name ? parent_type_name : "(unknown)"); return 0; } + + if (module_type_info->info.value_table) + g_free (odule_type_info->info.value_table); } else {