Returns now GNUNET_SYSERR
[oweals/gnunet.git] / src / util / bio.c
index 059638ff1f492414c25a1ac1db9abe65dbe7aab9..3fc7d05e620b2341a1c8adbc25cf2b43999dd29b 100644 (file)
@@ -79,10 +79,16 @@ GNUNET_BIO_read_open (const char *fn)
 int
 GNUNET_BIO_read_close (struct GNUNET_BIO_ReadHandle *h, char **emsg)
 {
-  *emsg = h->emsg;
+  int err;
+
+  err = (NULL == h->emsg) ? GNUNET_OK : GNUNET_SYSERR;
+  if (emsg != NULL)
+    *emsg = h->emsg;
+  else
+    GNUNET_free_non_null (h->emsg);
   GNUNET_DISK_file_close (h->fd);
   GNUNET_free (h);
-  return (NULL == *emsg) ? GNUNET_OK : GNUNET_SYSERR;
+  return err;
 }