diff --git a/ChangeLog b/ChangeLog
index 6f6628c72a882afde4a8f309405d523dce15ca5f..df06329071c5a7689d2553c21d00ba1bb492d3c2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,8 @@
 	* src/text.c (add_undo, update_undo, do_undo, do_redo), src/nano.h:
 	Store and retrieve the correct file size before and after an action.
 	This fixes Savannah bug #45523.
+	* src/files.c (free_chararray): Allow the parameter to be NULL.
+	This fixes Savannah bug #46420.
 
 2015-11-29  Benno Schulenberg  <bensberg@justemail.net>
 	* src/color.c (reset_multis): Evaluate correctly whether to reset
diff --git a/src/browser.c b/src/browser.c
index eb6119ac31a238a12118750c569e7e8cf2959444..25d24402faf6ee02c233ad8468d8ca5bde2972c7 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -460,8 +460,7 @@ void browser_init(const char *path, DIR *dir)
 
     rewinddir(dir);
 
-    if (filelist != NULL)
-	free_chararray(filelist, filelist_len);
+    free_chararray(filelist, filelist_len);
 
     filelist_len = i;
 
diff --git a/src/files.c b/src/files.c
index 220f978d4ca230dd55f21ad3b6bc17e99246d03c..4631cd2f06b5b0104963ca4987523626c57d194a 100644
--- a/src/files.c
+++ b/src/files.c
@@ -2553,7 +2553,8 @@ int diralphasort(const void *va, const void *vb)
  * elements. */
 void free_chararray(char **array, size_t len)
 {
-    assert(array != NULL);
+    if (array == NULL)
+	return;
 
     for (; len > 0; len--)
 	free(array[len - 1]);