summaryrefslogtreecommitdiff
path: root/lang/gawk/files
diff options
context:
space:
mode:
authorKirill Ponomarev <krion@FreeBSD.org>2007-09-03 20:18:36 +0000
committerKirill Ponomarev <krion@FreeBSD.org>2007-09-03 20:18:36 +0000
commit53381205a1926e057e120254780ef1ab5c420770 (patch)
tree235162a749869eb9080243cb75c26dee3c7c3dfe /lang/gawk/files
parent- Update to 2.7 (diff)
Fix coredump while running with nonexistent files.
PR: ports/115014 Submitted by: Kirill Nuzhdin <kirill@rad.chem.msu.ru>
Notes
Notes: svn path=/head/; revision=198708
Diffstat (limited to 'lang/gawk/files')
-rw-r--r--lang/gawk/files/patch-io.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/lang/gawk/files/patch-io.c b/lang/gawk/files/patch-io.c
new file mode 100644
index 000000000000..9d8f06f8c2fc
--- /dev/null
+++ b/lang/gawk/files/patch-io.c
@@ -0,0 +1,29 @@
+
+$FreeBSD$
+
+--- io.c.orig
++++ io.c
+@@ -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))