diff --git a/src/bplist.c b/src/bplist.c
index 14db755..24326b7 100644
--- a/src/bplist.c
+++ b/src/bplist.c
@@ -941,8 +941,6 @@
     for (ch = node_first_child(node); ch; ch = node_next_sibling(ch)) {
         serialize_plist(ch, data);
     }
-
-    return;
 }
 
 #define Log2(x) (x == 8 ? 3 : (x == 4 ? 2 : (x == 2 ? 1 : 0)))
diff --git a/src/plist.c b/src/plist.c
index 27f90b1..7ac146a 100644
--- a/src/plist.c
+++ b/src/plist.c
@@ -525,7 +525,6 @@
             }
         }
     }
-    return;
 }
 
 PLIST_API void plist_array_append_item(plist_t node, plist_t item)
@@ -535,7 +534,6 @@
         node_attach(node, item);
         _plist_array_post_insert(node, item, -1);
     }
-    return;
 }
 
 PLIST_API void plist_array_insert_item(plist_t node, plist_t item, uint32_t n)
@@ -545,7 +543,6 @@
         node_insert(node, n, item);
         _plist_array_post_insert(node, item, (long)n);
     }
-    return;
 }
 
 PLIST_API void plist_array_remove_item(plist_t node, uint32_t n)
@@ -562,7 +559,6 @@
             plist_free(old_item);
         }
     }
-    return;
 }
 
 PLIST_API void plist_array_item_remove(plist_t node)
@@ -587,7 +583,6 @@
         *iter = malloc(sizeof(node_t*));
         *((node_t**)(*iter)) = node_first_child(node);
     }
-    return;
 }
 
 PLIST_API void plist_array_next_item(plist_t node, plist_array_iter iter, plist_t *item)
@@ -607,7 +602,6 @@
         }
         *iter_node = node_next_sibling(*iter_node);
     }
-    return;
 }
 
 PLIST_API uint32_t plist_dict_get_size(plist_t node)
@@ -627,7 +621,6 @@
         *iter = malloc(sizeof(node_t*));
         *((node_t**)(*iter)) = node_first_child(node);
     }
-    return;
 }
 
 PLIST_API void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val)
@@ -656,7 +649,6 @@
         }
         *iter_node = node_next_sibling(*iter_node);
     }
-    return;
 }
 
 PLIST_API void plist_dict_get_item_key(plist_t node, char **key)
@@ -752,7 +744,6 @@
             }
         }
     }
-    return;
 }
 
 PLIST_API void plist_dict_insert_item(plist_t node, const char* key, plist_t item)
@@ -776,7 +767,6 @@
             plist_free(old_item);
         }
     }
-    return;
 }
 
 PLIST_API void plist_dict_merge(plist_t *target, plist_t source)
diff --git a/src/xplist.c b/src/xplist.c
index a7d52e5..537d315 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -370,8 +370,6 @@
         str_buf_append(*outbuf, ">", 1);
     }
     str_buf_append(*outbuf, "\n", 1);
-
-    return;
 }
 
 static void parse_date(const char *strval, struct TM *btime)
