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;
}
GNUNET_asprintf (&h->emsg,
_("Error reading `%s': %s"),
what, STRERROR (errno));
- abort ();
return GNUNET_SYSERR;
}
if (ret == 0)
GNUNET_asprintf (&h->emsg,
_("Error reading `%s': %s"),
what, _("End of file"));
- abort ();
return GNUNET_SYSERR;
}
h->pos = 0;