Returns now GNUNET_SYSERR
[oweals/gnunet.git] / src / util / bio.c
index 976da7e011344807650543b02e3838f35ef6e45e..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;
 }
 
 
@@ -129,7 +135,6 @@ GNUNET_BIO_read (struct GNUNET_BIO_ReadHandle *h,
           GNUNET_asprintf (&h->emsg,
                            _("Error reading `%s': %s"),
                            what, STRERROR (errno));
-         abort ();
           return GNUNET_SYSERR;
         }
       if (ret == 0)
@@ -137,7 +142,6 @@ GNUNET_BIO_read (struct GNUNET_BIO_ReadHandle *h,
           GNUNET_asprintf (&h->emsg,
                            _("Error reading `%s': %s"),
                            what, _("End of file"));
-         abort ();
           return GNUNET_SYSERR;
         }
       h->pos = 0;