[comp.bugs.sys5] grap bug

stevens@hsi.UUCP (Richard Stevens) (10/26/88)

Index:	grap.d/print.c - Documenter's Workbench, 2.0

Description:
	Grap isn't closing all its files.  Specifically, for every
	"copy thru" that it encounters, it opens its temporary file
	twice, but only closes it once.

Repeat-By:
	Create a file with a lot of "copy thru".  On 4.3 BSD (which allows
	64 open files per process) grap died on about the 60'th copy
	thru file.

Fix:
	The function reset() is being called twice, causing the tempfile	
	to be opened twice.  The following patch corrects the problem.

RCS file: RCS/print.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -r1.1 -r1.2
209,211c209,215
< 	if (tfd != stdout && (tfd = fopen(tempfile, "w")) == NULL) {
< 		fprintf(stderr, "grap: can't open %s\n", tempfile);
< 		exit(1);
---
> 	if (tfd != stdout) {
> 		if (tfd != NULL)
> 			fclose(tfd);
> 		if ((tfd = fopen(tempfile, "w")) == NULL) {
> 			fprintf(stderr, "grap: can't open %s\n", tempfile);
> 			exit(1);
> 		}