diff --git a/hash.c b/hash.c
index dbf634e..2a4d000 100644
--- a/hash.c
+++ b/hash.c
@@ -537,14 +537,6 @@
     return(NULL);
 }
 
-/**
- * xmlHashScan:
- * @table: the hash table
- * @f:  the scanner function for items in the hash
- * @data:  extra data passed to f
- *
- * Scan the hash @table and applied @f to each value.
- */
 typedef struct {
     xmlHashScanner hashscanner;
     void *data;
@@ -558,6 +550,14 @@
     stubdata->hashscanner (payload, stubdata->data, (xmlChar *) name);
 }                                  
  
+/**
+ * xmlHashScan:
+ * @table: the hash table
+ * @f:  the scanner function for items in the hash
+ * @data:  extra data passed to f
+ *
+ * Scan the hash @table and applied @f to each value.
+ */
 void
 xmlHashScan(xmlHashTablePtr table, xmlHashScanner f, void *data) {
     stubData stubdata;
@@ -752,13 +752,14 @@
  *
  * Returns 0 if the removal succeeded and -1 in case of error or not found.
  */
-int xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
+int
+xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
 			const xmlChar *name2, xmlHashDeallocator f) {
     return(xmlHashRemoveEntry3(table, name, name2, NULL, f));
 }
 
 /**
- * xmlHashRemoveEntry3
+ * xmlHashRemoveEntry3:
  * @table: the hash table
  * @name: the name of the userdata
  * @name2: a second name of the userdata
@@ -771,7 +772,8 @@
  *
  * Returns 0 if the removal succeeded and -1 in case of error or not found.
  */
-int xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
+int
+xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
     const xmlChar *name2, const xmlChar *name3, xmlHashDeallocator f) {
     unsigned long key;
     xmlHashEntryPtr entry;
