Firefox crashes on sparc64 when trying to display OpenType fonts. The
ots code appears to be from google and can be found in firefox,
chromium and probably some other places like webkit.

I've so far only tested FF since webkit has bigger issues on sparc64
than just some font stuff.

This site (http://thebrowsereview.com/category/css3/) can be used to
reproduce the issue.

Index: Makefile
===================================================================
RCS file: /srv/boron/data/vcs/cvs/openbsd/ports/www/mozilla-firefox/Makefile,v
retrieving revision 1.168
diff -u -p -r1.168 Makefile
--- Makefile    10 Mar 2011 14:34:18 -0000      1.168
+++ Makefile    17 Mar 2011 23:27:55 -0000
@@ -7,7 +7,7 @@ MOZILLA_VERSION =       3.6.14
 MOZILLA_BRANCH =       1.9.2
 MOZILLA_PROJECT =      mozilla-firefox
 MOZILLA_CODENAME =     browser
-REVISION =             0
+REVISION =             1
 
 SO_VERSION =   22.2
 # NOTE: Must bump minor version if any shlib's are removed from the
Index: patches/patch-gfx_ots_include_opentype-sanitiser_h
===================================================================
RCS file: patches/patch-gfx_ots_include_opentype-sanitiser_h
diff -N patches/patch-gfx_ots_include_opentype-sanitiser_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-gfx_ots_include_opentype-sanitiser_h  17 Mar 2011 23:32:21 
-0000
@@ -0,0 +1,19 @@
+$OpenBSD$
+
+Fix strict alignment architectures
+
+--- gfx/ots/include/opentype-sanitiser.h.orig  Fri Mar 18 00:02:27 2011
++++ gfx/ots/include/opentype-sanitiser.h       Fri Mar 18 00:02:35 2011
+@@ -64,8 +64,10 @@ class OTSStream {
+     }
+ 
+     while (length >= 4) {
+-      chksum_ += ntohl(*reinterpret_cast<const uint32_t*>(
+-          reinterpret_cast<const uint8_t*>(data) + offset));
++      uint32_t tmp;
++      std::memcpy(&tmp, reinterpret_cast<const uint8_t *>(data) + offset,
++        sizeof(uint32_t));
++      chksum_ += ntohl(tmp);
+       length -= 4;
+       offset += 4;
+     }

Reply via email to