[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r26114 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r26114 - gnunet/src/util |
Date: |
Thu, 14 Feb 2013 17:15:11 +0100 |
Author: LRN
Date: 2013-02-14 17:15:11 +0100 (Thu, 14 Feb 2013)
New Revision: 26114
Modified:
gnunet/src/util/disk.c
Log:
Fix file close to work on pipe ends correctly
Modified: gnunet/src/util/disk.c
===================================================================
--- gnunet/src/util/disk.c 2013-02-14 16:15:07 UTC (rev 26113)
+++ gnunet/src/util/disk.c 2013-02-14 16:15:11 UTC (rev 26114)
@@ -1819,32 +1819,51 @@
int
GNUNET_DISK_file_close (struct GNUNET_DISK_FileHandle *h)
{
+ int ret;
if (h == NULL)
{
errno = EINVAL;
return GNUNET_SYSERR;
}
+ ret = GNUNET_OK;
+
#if MINGW
if (!CloseHandle (h->h))
{
SetErrnoFromWinError (GetLastError ());
LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "close");
+ ret = GNUNET_SYSERR;
+ }
+ if (h->oOverlapRead)
+ {
+ if (!CloseHandle (h->oOverlapRead->hEvent))
+ {
+ SetErrnoFromWinError (GetLastError ());
+ LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "close");
+ ret = GNUNET_SYSERR;
+ }
GNUNET_free (h->oOverlapRead);
+ }
+ if (h->oOverlapWrite)
+ {
+ if (!CloseHandle (h->oOverlapWrite->hEvent))
+ {
+ SetErrnoFromWinError (GetLastError ());
+ LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "close");
+ ret = GNUNET_SYSERR;
+ }
GNUNET_free (h->oOverlapWrite);
- GNUNET_free (h);
- return GNUNET_SYSERR;
}
#else
if (close (h->fd) != 0)
{
LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "close");
- GNUNET_free (h);
- return GNUNET_SYSERR;
+ ret = GNUNET_SYSERR;
}
#endif
GNUNET_free (h);
- return GNUNET_OK;
+ return ret;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r26114 - gnunet/src/util,
gnunet <=