Module Name: src Committed By: rillig Date: Fri Jun 23 20:43:21 UTC 2023
Modified Files: src/usr.bin/indent: debug.c indent.c indent.h Log Message: indent: properly store parser state in debug mode The stacks in the parser state are allocated now and need to be copied individually. The test whether two paren stacks are equal was broken since 2023-06-14 14:11:28. To generate a diff of this commit: cvs rdiff -u -r1.67 -r1.68 src/usr.bin/indent/debug.c cvs rdiff -u -r1.381 -r1.382 src/usr.bin/indent/indent.c cvs rdiff -u -r1.202 -r1.203 src/usr.bin/indent/indent.h 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/debug.c diff -u src/usr.bin/indent/debug.c:1.67 src/usr.bin/indent/debug.c:1.68 --- src/usr.bin/indent/debug.c:1.67 Sat Jun 17 22:28:49 2023 +++ src/usr.bin/indent/debug.c Fri Jun 23 20:43:21 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: debug.c,v 1.67 2023/06/17 22:28:49 rillig Exp $ */ +/* $NetBSD: debug.c,v 1.68 2023/06/23 20:43:21 rillig Exp $ */ /*- * Copyright (c) 2023 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: debug.c,v 1.67 2023/06/17 22:28:49 rillig Exp $"); +__RCSID("$NetBSD: debug.c,v 1.68 2023/06/23 20:43:21 rillig Exp $"); #include <stdarg.h> #include <string.h> @@ -263,8 +263,8 @@ paren_stack_equal(const struct paren_sta for (size_t i = 0, n = a->len; i < n; i++) if (a->item[i].indent != b->item[i].indent || a->item[i].cast != b->item[i].cast) - return true; - return false; + return false; + return true; } static void @@ -375,7 +375,8 @@ debug_parser_state(void) state.heading = NULL; debug_blank_line(); - state.prev_ps = ps; + parser_state_free(&state.prev_ps); + parser_state_back_up(&state.prev_ps); state.ps_first = false; } Index: src/usr.bin/indent/indent.c diff -u src/usr.bin/indent/indent.c:1.381 src/usr.bin/indent/indent.c:1.382 --- src/usr.bin/indent/indent.c:1.381 Sun Jun 18 07:10:24 2023 +++ src/usr.bin/indent/indent.c Fri Jun 23 20:43:21 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: indent.c,v 1.381 2023/06/18 07:10:24 rillig Exp $ */ +/* $NetBSD: indent.c,v 1.382 2023/06/23 20:43:21 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: indent.c,v 1.381 2023/06/18 07:10:24 rillig Exp $"); +__RCSID("$NetBSD: indent.c,v 1.382 2023/06/23 20:43:21 rillig Exp $"); #include <sys/param.h> #include <err.h> @@ -464,7 +464,7 @@ dup_mem(const void *src, size_t size) #define copy_array(dst, src, len) \ memcpy((dst), (src), sizeof((dst)[0]) * (len)) -static void +static_unless_debug void parser_state_back_up(struct parser_state *dst) { *dst = ps; @@ -496,7 +496,7 @@ parser_state_restore(const struct parser copy_array(ps.psyms.ind_level, src->psyms.ind_level, src->psyms.len); } -static void +static_unless_debug void parser_state_free(struct parser_state *pst) { free(pst->paren.item); Index: src/usr.bin/indent/indent.h diff -u src/usr.bin/indent/indent.h:1.202 src/usr.bin/indent/indent.h:1.203 --- src/usr.bin/indent/indent.h:1.202 Fri Jun 16 23:51:32 2023 +++ src/usr.bin/indent/indent.h Fri Jun 23 20:43:21 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: indent.h,v 1.202 2023/06/16 23:51:32 rillig Exp $ */ +/* $NetBSD: indent.h,v 1.203 2023/06/23 20:43:21 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD @@ -442,10 +442,13 @@ void debug_parser_state(void); void debug_psyms_stack(const char *); void debug_print_buf(const char *, const struct buffer *); void debug_buffers(void); +void parser_state_back_up(struct parser_state *); +void parser_state_free(struct parser_state *); extern const char *const lsym_name[]; extern const char *const psym_name[]; extern const char *const paren_level_cast_name[]; extern const char *const line_kind_name[]; +#define static_unless_debug /* nothing */ #else #define debug_noop() do { } while (false) #define debug_printf(fmt, ...) debug_noop() @@ -456,6 +459,7 @@ extern const char *const line_kind_name[ #define debug_psyms_stack(situation) debug_noop() #define debug_print_buf(name, buf) debug_noop() #define debug_buffers() debug_noop() +#define static_unless_debug static #endif void register_typename(const char *);