fontconfig: Branch 'main' - 2 commits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Oct 9 10:08:33 UTC 2024


 fontconfig/fontconfig.h |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit 8bf3b04211f18861796660508ae9dc6e79374e86
Merge: 211cc5f 8db62f5
Author: Akira TAGOH <akira at tagoh.org>
Date:   Wed Oct 9 10:08:26 2024 +0000

    Merge branch 'alias' into 'main'
    
    fontconfig: mark _FcPatternIter as may_alias
    
    See merge request fontconfig/fontconfig!333

commit 8db62f5a77fd53543dd58e12da7bd96082228893
Author: Sam James <sam at gentoo.org>
Date:   Tue Oct 8 16:48:19 2024 +0100

    fontconfig: mark _FcPatternIter as may_alias
    
    We had a report of GCC 14 with -O3 -flto causing wrong font
    sizes with fontconfig (showing up in qalculate-gtk).
    
    It turns out to be because _FcPatternIter and _FcPatternPrivateIter
    are punned between which violates strict-aliasing rules, which
    manifested in FcDefaultSubstitute getting a bogus value from
    FcValueCanonicalize for size.
    
    void* isn't allowed to alias anything -- you can pass addresses
    around provided you cast back to the original type, but if you
    access through the wrong type, you've violated aliasing rules.
    
    Bug: https://bugs.gentoo.org/940923
    Signed-off-by: Sam James <sam at gentoo.org>

diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
index d7df876..0e053e5 100644
--- a/fontconfig/fontconfig.h
+++ b/fontconfig/fontconfig.h
@@ -32,8 +32,10 @@
 
 #if defined(__GNUC__) && (__GNUC__ >= 4)
 #define FC_ATTRIBUTE_SENTINEL(x) __attribute__((__sentinel__(0)))
+#define FC_ATTRIBUTE_MAY_ALIAS __attribute__((may_alias))
 #else
 #define FC_ATTRIBUTE_SENTINEL(x)
+#define FC_ATTRIBUTE_MAY_ALIAS
 #endif
 
 #ifndef FcPublic
@@ -253,7 +255,7 @@ typedef enum _FcValueBinding {
 
 typedef struct _FcPattern   FcPattern;
 
-typedef struct _FcPatternIter {
+typedef struct FC_ATTRIBUTE_MAY_ALIAS _FcPatternIter {
     void *dummy1;
     void *dummy2;
 } FcPatternIter;
@@ -1160,6 +1162,7 @@ FcConfigParseAndLoadFromMemory (FcConfig       *config,
 _FCFUNCPROTOEND
 
 #undef FC_ATTRIBUTE_SENTINEL
+#undef FC_ATTRIBUTE_MAY_ALIAS
 
 
 #ifndef _FCINT_H_


More information about the Fontconfig mailing list