summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2025-03-31 16:16:10 +0000
committerTom Lane2025-03-31 16:16:32 +0000
commit2fd3e2fa5c908d05ac4d8b6c2c80fd50c506f32e (patch)
treeb89f702348196d3f904984499b349d38ff42a26a
parent0fcf02ad456862d8523a1918e2882e7697a52896 (diff)
Fix accidentally-harmless thinko in psqlscan_test_variable().
This code was passing literal strings to psqlscan_emit, which is quite contrary to that function's specification: "If you pass it something that is not part of the yytext string, you are making a mistake". It accidentally worked anyway, even in non-safe_encoding mode. psqlscan_emit would compute a garbage "reference" pointer, but would never dereference that since the passed string is all-ASCII. So there's no live bug today, but that is a happenstance outcome of psqlscan_emit's current implementation. Let's make psqlscan_test_variable do what it's supposed to, namely append directly to the output buffer. This is just future-proofing against possible changes in psqlscan_emit, so I don't feel a need to back-patch.
-rw-r--r--src/fe_utils/psqlscan.l4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/fe_utils/psqlscan.l b/src/fe_utils/psqlscan.l
index 4dbf2564276..fc5bfa597bb 100644
--- a/src/fe_utils/psqlscan.l
+++ b/src/fe_utils/psqlscan.l
@@ -1626,11 +1626,11 @@ psqlscan_test_variable(PsqlScanState state, const char *txt, int len)
if (value != NULL)
{
- psqlscan_emit(state, "TRUE", 4);
+ appendPQExpBufferStr(state->output_buf, "TRUE");
free(value);
}
else
{
- psqlscan_emit(state, "FALSE", 5);
+ appendPQExpBufferStr(state->output_buf, "FALSE");
}
}