home *** CD-ROM | disk | FTP | other *** search
- From: lowell@tc.fluke.COM (Lowell Skoog)
- Newsgroups: comp.sources.bugs
- Subject: CVS 1.2 bug: CVS commit dumps core on long file lists
- Date: 29 May 91 20:41:40 GMT
- Organization: John Fluke Mfg. Co., Inc., Everett, WA
-
- Symptom:
- When committing a large number of files (the list of file names
- exceeds 1000 characters), CVS dumps core before putting the user
- in an editor to enter a log message.
-
- Work-around:
- Avoid using `cvs commit -a' when many files need to be
- committed. Instead, commit the files in smaller groups.
-
- Cause:
- During the commit process, CVS collects lists of all files that
- have been modified, added, removed, etc. It puts these lists in
- a temporary file then allows the user to enter a log message.
- When creating the temporary file, CVS uses the fmt() function to
- break up the file lists into reasonable sized lines to avoid line
- wrap. Unfortunately, the fmt() function provides space (in a
- fixed array) for a line of length MAXLINELEN (1000 bytes), while
- each list can be of length MAXLISTLEN (20000 bytes). So, the
- potential length of a file list is longer than fmt() can handle.
-
- Solution:
- Change the "line" array in fmt() to be of size MAXLISTLEN.
-
- A patch file is attached below. A copy of this message has been sent
- to berliner@sun.com.
-
- ----------------------------------------------------------------------
- Lowell Skoog M/S 223B lowell@tc.fluke.COM
- John Fluke Mfg. Co. Inc. {uunet,uw-beaver,microsoft,sun}!fluke!lowell
- P.O. Box 9090
- Everett, WA, USA 98206-9090 (206) 356-5283
- ----------------------------------------------------------------------
-
- diff -c cvs/src/commit.c:1.1.1.1 cvs/src/commit.c:1.3
- *** cvs/src/commit.c:1.1.1.1 Wed May 29 13:33:03 1991
- --- cvs/src/commit.c Wed May 29 13:33:03 1991
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char rcsid[] = "$Id: commit.c,v 1.1.1.1 1991/02/22 16:33:40 lowell Exp $";
- #endif !lint
-
- /*
- --- 1,5 ----
- #ifndef lint
- ! static char rcsid[] = "$Id: commit.c,v 1.3 1991/05/29 19:41:40 lowell Exp $";
- #endif !lint
-
- /*
- ***************
- *** 517,523 ****
- char *instring;
- char *prefix;
- {
- ! char line[MAXLINELEN];
- char *cp;
- int col;
-
- --- 517,523 ----
- char *instring;
- char *prefix;
- {
- ! char line[MAXLISTLEN]; /* UNOFFICIAL bug fix, was MAXLINELEN */
- char *cp;
- int col;
-