From 2dd6733108f2bea07b0a3469e768bd900c0808b3 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 14 Feb 2021 19:53:28 -0500 Subject: Minor fixes to improve regex debugging code. When REG_DEBUG is defined, ensure that an un-filled "struct cnfa" is all-zeroes, not just that it has nstates == 0. This is mainly so that looking at "struct subre" structs in gdb doesn't distract one with a lot of garbage fields during regex compilation. Adjust some places that print debug output to have suitable fflush calls afterwards. In passing, correct an erroneous ancient comment: the concatenation subre-s created by parsebranch() have op == '.' not ','. Noted while fooling around with some regex performance improvements. --- src/include/regex/regguts.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/include/regex') diff --git a/src/include/regex/regguts.h b/src/include/regex/regguts.h index 5d0e7a961c9..0a616562d03 100644 --- a/src/include/regex/regguts.h +++ b/src/include/regex/regguts.h @@ -368,7 +368,15 @@ struct cnfa struct carc *arcs; /* the area for the lists */ }; +/* + * When debugging, it's helpful if an un-filled CNFA is all-zeroes. + * In production, though, we only require nstates to be zero. + */ +#ifdef REG_DEBUG +#define ZAPCNFA(cnfa) memset(&(cnfa), 0, sizeof(cnfa)) +#else #define ZAPCNFA(cnfa) ((cnfa).nstates = 0) +#endif #define NULLCNFA(cnfa) ((cnfa).nstates == 0) /* -- cgit v1.2.3