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
{