Skip to content

Commit 2fd3e2f

Browse files
committed
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.
1 parent 0fcf02a commit 2fd3e2f

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/fe_utils/psqlscan.l

+2-2
Original file line numberDiff line numberDiff line change
@@ -1626,11 +1626,11 @@ psqlscan_test_variable(PsqlScanState state, const char *txt, int len)
16261626

16271627
if (value != NULL)
16281628
{
1629-
psqlscan_emit(state, "TRUE", 4);
1629+
appendPQExpBufferStr(state->output_buf, "TRUE");
16301630
free(value);
16311631
}
16321632
else
16331633
{
1634-
psqlscan_emit(state, "FALSE", 5);
1634+
appendPQExpBufferStr(state->output_buf, "FALSE");
16351635
}
16361636
}

0 commit comments

Comments
 (0)