Module Name: src
Committed By: rillig
Date: Sat Oct 30 17:18:26 UTC 2021
Modified Files:
src/usr.bin/indent: indent.c
Log Message:
indent: add debug logging for save_com
This will help in finding the proper fix for the assertion failure in
search_stmt_comment.
Add an assertion in search_stmt_lbrace to prevent the previous,
incomplete fix from being applied again.
To generate a diff of this commit:
cvs rdiff -u -r1.189 -r1.190 src/usr.bin/indent/indent.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/indent/indent.c
diff -u src/usr.bin/indent/indent.c:1.189 src/usr.bin/indent/indent.c:1.190
--- src/usr.bin/indent/indent.c:1.189 Sat Oct 30 16:18:51 2021
+++ src/usr.bin/indent/indent.c Sat Oct 30 17:18:25 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: indent.c,v 1.189 2021/10/30 16:18:51 rillig Exp $ */
+/* $NetBSD: indent.c,v 1.190 2021/10/30 17:18:25 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@ static char sccsid[] = "@(#)indent.c 5.1
#include <sys/cdefs.h>
#if defined(__NetBSD__)
-__RCSID("$NetBSD: indent.c,v 1.189 2021/10/30 16:18:51 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.190 2021/10/30 17:18:25 rillig Exp $");
#elif defined(__FreeBSD__)
__FBSDID("$FreeBSD: head/usr.bin/indent/indent.c 340138 2018-11-04 19:24:49Z oshogbo $");
#endif
@@ -157,6 +157,17 @@ diag(int level, const char *msg, ...)
va_end(ap);
}
+#ifdef debug
+static void
+debug_save_com(const char *prefix)
+{
+ debug_printf("%s: save_com is ", prefix);
+ debug_vis_range("\"", save_com, sc_end, "\"\n");
+}
+#else
+#define debug_save_com(prefix) do { } while (false)
+#endif
+
static void
sc_check_size(size_t n)
{
@@ -192,8 +203,10 @@ search_stmt_newline(bool *force_nl)
save_com = sc_buf;
save_com[0] = save_com[1] = ' ';
sc_end = &save_com[2];
+ debug_save_com("search_stmt_newline init");
}
sc_add_char('\n');
+ debug_save_com(__func__);
line_no++;
@@ -228,6 +241,10 @@ search_stmt_comment(bool *comment_buffer
save_com = sc_buf + (inp.s - inp.buf - 4);
save_com[0] = save_com[1] = ' ';
sc_end = &save_com[2];
+ debug_vis_range("search_stmt_comment: before save_com is \"",
+ sc_buf, save_com, "\"\n");
+ debug_vis_range("search_stmt_comment: save_com is \"",
+ save_com, sc_end, "\"\n");
}
*comment_buffered = true;
@@ -238,6 +255,7 @@ search_stmt_comment(bool *comment_buffer
sc_add_char(inbuf_next());
if (sc_end[-1] == '*' && *inp.s == '/') {
sc_add_char(inbuf_next());
+ debug_save_com("search_stmt_comment end");
break;
}
}
@@ -251,6 +269,7 @@ search_stmt_lbrace(void)
* this loop in order to avoid copying the token again.
*/
if (sc_end != NULL && opt.brace_same_line) {
+ assert(save_com[0] == ' '); /* see search_stmt_comment */
save_com[0] = '{';
/*
* Originally the lbrace may have been alone on its own line, but it
@@ -262,6 +281,7 @@ search_stmt_lbrace(void)
if (*inp.s == '\n')
break;
}
+ debug_save_com(__func__);
return true;
}
return false;
@@ -287,6 +307,7 @@ search_stmt_other(lexer_symbol lsym, boo
return false;
}
+ debug_save_com(__func__);
while (sc_end > save_com && ch_isblank(sc_end[-1]))
sc_end--;
@@ -310,6 +331,7 @@ search_stmt_other(lexer_symbol lsym, boo
for (const char *t_ptr = token.s; *t_ptr != '\0'; ++t_ptr)
sc_add_char(*t_ptr);
+ debug_save_com("search_stmt_other end");
return true;
}
@@ -319,6 +341,7 @@ switch_buffer(void)
ps.search_stmt = false;
saved_inp_s = inp.s; /* save current input buffer */
saved_inp_e = inp.e;
+ debug_save_com(__func__);
inp.s = save_com; /* fix so that subsequent calls to lexi will
* take tokens out of save_com */
sc_add_char(' '); /* add trailing blank, just in case */
@@ -353,6 +376,7 @@ search_stmt_lookahead(lexer_symbol *lsym
if (sc_end != NULL) {
while (ch_isblank(*inp.s))
sc_add_char(inbuf_next());
+ debug_save_com(__func__);
}
struct parser_state backup_ps = ps;
@@ -1267,6 +1291,7 @@ read_preprocessing_line(void)
inp.s = save_com; /* fix so that subsequent calls to lexi will
* take tokens out of save_com */
sc_add_char(' '); /* add trailing blank, just in case */
+ debug_save_com(__func__);
inp.e = sc_end;
sc_end = NULL;
debug_println("switched inp.s to save_com");