[cairo] fix alignment issue on SPARC processors

Nicolas Setton setton at adacore.com
Thu Dec 4 09:12:04 PST 2014


There is an alignment issue on SPARC processors which causes a SIGBUS when
trying to write data to edges in the polygon scan converter.

Here is the patch that we've applied to circumvent the issue. 

Hope this helps!

Nicolas

diff --git a/src/cairo-tor-scan-converter.c b/src/cairo-tor-scan-converter.c
index 14922d0..d811825 100644
--- a/src/cairo-tor-scan-converter.c
+++ b/src/cairo-tor-scan-converter.c
@@ -273,6 +273,11 @@ struct _pool_chunk {
     /* # bytes total in this chunk */
     size_t capacity;
 
+    /* Pad to fix alignment issue on sparc: the long long integers
+     * are aligned on 64-bit boundaries. Make sure that this is the
+     * case in the memory pool by bumping the size of this struct. */
+    short padding;
+
     /* Pointer to the previous chunk or %NULL if this is the sentinel
      * chunk in the pool header. */
     struct _pool_chunk *prev_chunk;



More information about the cairo mailing list