Fix issue with --enable-coverage and the new unicode {de,re}composition code
authorMichael Paquier <[email protected]>
Sat, 24 Oct 2020 05:20:38 +0000 (14:20 +0900)
committerMichael Paquier <[email protected]>
Sat, 24 Oct 2020 05:20:38 +0000 (14:20 +0900)
genhtml has been generating the following warning with this new code:
WARNING: function data mismatch at /path/src/common/unicode_norm.c:102

HTML coverage reports care about the uniqueness of functions defined in
source files, ignoring any assumptions around CFLAGS.  783f0cc
introduced a duplicated definition of get_code_entry(), leading to a
warning and potentially some incorrect data generated in the reports.
This refactors the code so as the code has only one function
declaration, fixing the warning.

Oversight in 783f0cc.

Reported-by: Tom Lane
Author: Michael Paquier
Reviewed-by: Tom Lane
Discussion: https://postgr.es/m/207789.1603469272@sss.pgh.pa.us

src/common/unicode_norm.c

index 4ffce0e61930bd3fea4d86431c01a5d6ae8ab3a2..abb83cbf985e0676f3782dfbb7978716a777bea8 100644 (file)
 #define NCOUNT     VCOUNT * TCOUNT
 #define SCOUNT     LCOUNT * NCOUNT
 
+#ifdef FRONTEND
+/* comparison routine for bsearch() of decomposition lookup table. */
+static int
+conv_compare(const void *p1, const void *p2)
+{
+   uint32      v1,
+               v2;
+
+   v1 = *(const uint32 *) p1;
+   v2 = ((const pg_unicode_decomposition *) p2)->codepoint;
+   return (v1 > v2) ? 1 : ((v1 == v2) ? 0 : -1);
+}
+
+#endif
+
 /*
  * get_code_entry
  *
  * The backend version of this code uses a perfect hash function for the
  * lookup, while the frontend version uses a binary search.
  */
-#ifndef FRONTEND
-
 static const pg_unicode_decomposition *
 get_code_entry(pg_wchar code)
 {
+#ifndef FRONTEND
    int         h;
    uint32      hashkey;
    pg_unicode_decompinfo decompinfo = UnicodeDecompInfo;
@@ -82,33 +96,15 @@ get_code_entry(pg_wchar code)
 
    /* Success! */
    return &decompinfo.decomps[h];
-}
-
 #else
-
-/* comparison routine for bsearch() of decomposition lookup table. */
-static int
-conv_compare(const void *p1, const void *p2)
-{
-   uint32      v1,
-               v2;
-
-   v1 = *(const uint32 *) p1;
-   v2 = ((const pg_unicode_decomposition *) p2)->codepoint;
-   return (v1 > v2) ? 1 : ((v1 == v2) ? 0 : -1);
-}
-
-static const pg_unicode_decomposition *
-get_code_entry(pg_wchar code)
-{
    return bsearch(&(code),
                   UnicodeDecompMain,
                   lengthof(UnicodeDecompMain),
                   sizeof(pg_unicode_decomposition),
                   conv_compare);
+#endif
 }
 
-#endif                         /* !FRONTEND */
 
 /*
  * Given a decomposition entry looked up earlier, get the decomposed