There are a few serious bugs in 3.80rc1 that I immediately ran into when testing:
1) free() gets called with garbage if opendir() fails. 2) file handles are leaked when processing include files. 3) appending to a simply expanded variable doesn't work. The patch below fixes all of them, at least for me. I've sent this to Paul Smith for inclusion in the next release candidate, but since he's going to be away for a couple weeks, I figured sending a copy to the lists may head off headaches and/or debugging efforts in others. Enjoy! Philip Guenther [EMAIL PROTECTED] ---------- *** dir.c Thu Jul 11 17:48:03 2002 --- dir.c Tue Jul 16 22:45:00 2002 *************** *** 546,552 **** if (dc->dirstream == 0) /* Couldn't open the directory. Mark this by setting the `files' member to a nil pointer. */ ! hash_free (&dc->dirfiles, 0); else { hash_init (&dc->dirfiles, DIRFILE_BUCKETS, --- 546,552 ---- if (dc->dirstream == 0) /* Couldn't open the directory. Mark this by setting the `files' member to a nil pointer. */ ! dc->dirfiles.ht_vec = 0; else { hash_init (&dc->dirfiles, DIRFILE_BUCKETS, *** read.c Thu Jul 11 17:48:03 2002 --- read.c Tue Jul 16 22:47:25 2002 *************** *** 380,385 **** --- 380,387 ---- reading_file = curfile; + fclose(ebuf.fp); + free(ebuf.bufstart); return r; } *** variable.c Tue Jul 16 23:19:06 2002 --- variable.c Tue Jul 16 23:22:13 2002 *************** *** 744,749 **** --- 744,750 ---- /* Paste the old and new values together in VALUE. */ unsigned int oldlen, newlen; + char *new_value; p = value; if (v->recursive) *************** *** 760,769 **** oldlen = strlen (v->value); newlen = strlen (p); ! p = (char *) alloca (oldlen + 1 + newlen + 1); ! bcopy (v->value, p, oldlen); ! p[oldlen] = ' '; ! bcopy (value, &p[oldlen + 1], newlen + 1); } } } --- 761,771 ---- oldlen = strlen (v->value); newlen = strlen (p); ! new_value = (char *) alloca (oldlen + 1 + newlen + 1); ! bcopy (v->value, new_value, oldlen); ! new_value[oldlen] = ' '; ! bcopy (p, &new_value[oldlen + 1], newlen + 1); ! p = new_value; } } } _______________________________________________ Bug-make mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-make