Fix output of Unicode normalization test
authorPeter Eisentraut <peter@eisentraut.org>
Wed, 11 Dec 2019 07:42:17 +0000 (08:42 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Wed, 11 Dec 2019 07:42:17 +0000 (08:42 +0100)
Several off-by-more-than-one errors caused the output in case of a
test failure to be truncated and unintelligible.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/6a7a8516-7d11-8fbd-0e8b-eadb4f0679eb%402ndquadrant.com

src/common/unicode/norm_test.c

index fee58a184aa97790103cfc05ead1e8efc912fa6c..de7d6a72c7858a7e392aec93d21be514b162372c 100644 (file)
@@ -23,17 +23,20 @@ static char *
 print_wchar_str(const pg_wchar *s)
 {
 #define BUF_DIGITS 50
-   static char buf[BUF_DIGITS * 2 + 1];
+   static char buf[BUF_DIGITS * 11 + 1];
    int         i;
+   char       *p;
 
    i = 0;
+   p = buf;
    while (*s && i < BUF_DIGITS)
    {
-       snprintf(&buf[i * 2], 3, "%04X", *s);
+       p += sprintf(p, "U+%04X ", *s);
        i++;
        s++;
    }
-   buf[i * 2] = '\0';
+   *p = '\0';
+
    return buf;
 }
 
@@ -67,9 +70,9 @@ main(int argc, char **argv)
        if (pg_wcscmp(test->output, result) != 0)
        {
            printf("FAILURE (NormalizationTest.txt line %d):\n", test->linenum);
-           printf("input:\t%s\n", print_wchar_str(test->input));
-           printf("expected:\t%s\n", print_wchar_str(test->output));
-           printf("got\t%s\n", print_wchar_str(result));
+           printf("input:    %s\n", print_wchar_str(test->input));
+           printf("expected: %s\n", print_wchar_str(test->output));
+           printf("got:      %s\n", print_wchar_str(result));
            printf("\n");
            exit(1);
        }