jbayer@ispi.com (Jonathan Bayer) (08/29/89)
While installing bash on SCO Xenix 386 2.3.2 using the 2.3 development system, I kept getting core dumps when typing a control-d at the prompt. I traced this to readline and parse.y. It seems that when an eof is read that readline returns a (char *)EOF. Now, EOF is defined as a -1 on this system. Right after the readline is a call to xrealloc. xrealloc was bombing on the call to realloc because it was passed a bad pointer. My solution (not necessarily the best) was to put a check in parse.y, checking for a (char *)EOF. If found, it mallocs a 2 char string, puts the EOF in the first byte, and a 0 in the second byte. This seems to solve the problem. JB *** parse.y.std Mon Aug 28 12:43:47 1989 --- parse.y Mon Aug 28 17:09:59 1989 *************** *** 430,439 **** current_readline_line = readline (current_readline_prompt); current_readline_line_index = 0; ! current_readline_line = ! (char *)xrealloc (current_readline_line, ! 2 + strlen (current_readline_line)); ! strcat (current_readline_line, "\n"); } if (!current_readline_line[current_readline_line_index]) --- 430,447 ---- current_readline_line = readline (current_readline_prompt); current_readline_line_index = 0; ! ! if (current_readline_line == (char *)EOF) { ! current_readline_line = (char *)xmalloc(2); ! strcpy(" ",current_readline_line); ! current_readline_line[0] = EOF; ! } else { ! ! current_readline_line = ! (char *)xrealloc (current_readline_line, ! 2 + strlen (current_readline_line)); ! strcat (current_readline_line, "\n"); ! } } if (!current_readline_line[current_readline_line_index]) -- Jonathan Bayer Intelligent Software Products, Inc. (201) 245-5922 500 Oakwood Ave. jbayer@ispi.COM Roselle Park, NJ 07204