|
|
http://lists.gnu.org/archive/html/bug-gnu-utils/2005-08/msg00047.html
--- ./io.c 2005-07-26 21:07:43.000000000 +0300
+++ ./io.c 2005-08-12 13:10:28.239852344 +0300
@@ -2480,9 +2480,12 @@
{ struct stat sbuf; struct open_hook *oh; + int iop_malloced = FALSE;
- if (iop == NULL)
+ if (iop == NULL) {
emalloc(iop, IOBUF *, sizeof(IOBUF), "iop_alloc"); + iop_malloced = TRUE;
+ }
memset(iop, '\0', sizeof(IOBUF)); iop->flag = 0; iop->fd = fd; @@ -2495,7 +2498,8 @@
} if (iop->fd == INVALID_HANDLE) { - free(iop);
+ if (iop_malloced)
+ free(iop);
return NULL; } if (isatty(iop->fd)) @@ -2503,7 +2507,7 @@
iop->readsize = iop->size = optimal_bufsize(iop->fd, & sbuf); iop->sbuf = sbuf; if (do_lint && S_ISREG(sbuf.st_mode) && sbuf.st_size == 0) - lintwarn(_("data file `%s' is empty"), name);
+ lintwarn(_("data file `%s' is empty"), name);
errno = 0; iop->count = iop->scanoff = 0; emalloc(iop->buf, char *, iop->size += 2, "iop_alloc");
|