diff --git a/src/util/bio.c b/src/util/bio.c
index 70620aea7..2d1be2238 100644
--- a/src/util/bio.c
+++ b/src/util/bio.c
@@ -567,7 +567,10 @@ GNUNET_BIO_write_close (struct GNUNET_BIO_WriteHandle *h, char **emsg)
   {
   case IO_FILE:
     if (NULL == h->fd)
-      return GNUNET_SYSERR;
+    {
+      err = GNUNET_SYSERR;
+      break;
+    }
     if (GNUNET_OK != GNUNET_BIO_flush (h))
     {
       if (NULL != emsg)
diff --git a/src/util/test_bio.c b/src/util/test_bio.c
index 90f0121d4..8dadb8108 100644
--- a/src/util/test_bio.c
+++ b/src/util/test_bio.c
@@ -68,6 +68,7 @@ test_normal_rw (void)
   GNUNET_assert (GNUNET_OK == GNUNET_BIO_read_close (rh, NULL));
   GNUNET_assert (0 == strcmp (TESTSTRING, rString));
   GNUNET_assert (wNum == rNum);
+  GNUNET_free (rString);
 
   GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (filename));
   GNUNET_free (filename);
@@ -89,6 +90,7 @@ test_normal_rw (void)
   GNUNET_assert (GNUNET_OK == GNUNET_BIO_read_close (rh, NULL));
   GNUNET_assert (0 == strcmp (TESTSTRING, rString));
   GNUNET_assert (wNum == rNum);
+  GNUNET_free (rString);
 
   GNUNET_free (buffer);
 
