Modify makedefs to use dynamic buffers for reading.

This will prevent crashing due to excessively long lines.
This commit is contained in:
Sean Hunt
2015-05-24 21:40:30 +09:00
committed by nhmall
parent f477645774
commit 49b9f6c926
4 changed files with 125 additions and 63 deletions

View File

@@ -33,7 +33,7 @@ STATIC_DCL void FDECL(deliver_by_pline, (struct qtmsg *));
STATIC_DCL void FDECL(deliver_by_window, (struct qtmsg *, int));
STATIC_DCL boolean FDECL(skip_pager, (BOOLEAN_P));
static char in_line[QTEXT_IN_SIZ], out_line[QTEXT_OUTSIZ], cvt_buf[64];
static char in_line[QTEXT_OUTSIZ], out_line[QTEXT_OUTSIZ], cvt_buf[64];
static struct qtlists qt_list;
static dlb *msg_file;
/* used by ldrname() and neminame(), then copied into cvt_buf */
@@ -459,7 +459,7 @@ struct qtmsg *qt_msg;
long size;
for (size = 0; size < qt_msg->size; size += (long) strlen(in_line)) {
(void) dlb_fgets(in_line, QTEXT_IN_SIZ, msg_file);
(void) dlb_fgets(in_line, QTEXT_OUTSIZ, msg_file);
convert_line();
pline1(out_line);
}
@@ -487,7 +487,7 @@ int how;
}
#endif
for (size = 0; size < qt_msg->size; size += (long) strlen(in_line)) {
(void) dlb_fgets(in_line, QTEXT_IN_SIZ, msg_file);
(void) dlb_fgets(in_line, QTEXT_OUTSIZ, msg_file);
convert_line();
putstr(datawin, 0, out_line);
}
@@ -497,7 +497,7 @@ int how;
/* block messages delivered by window aren't kept in message history
but can have a one-line summary which is put there for ^P recall */
if (qt_msg->summary_size) {
(void) dlb_fgets(in_line, QTEXT_IN_SIZ, msg_file);
(void) dlb_fgets(in_line, QTEXT_OUTSIZ, msg_file);
convert_line();
putmsghistory(out_line, FALSE);
}