This backports a patch from Qt 5.6 that fixed a SIGFPE when using Xvfb.
I've tested this with an updated ruby-capybara-webkit running using Xvfb
and confirmed that it fixes the issue.

OK?

Thanks,
Jeremy

Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/qt5/Makefile,v
retrieving revision 1.52
diff -u -p -r1.52 Makefile
--- Makefile    6 Sep 2016 09:00:19 -0000       1.52
+++ Makefile    20 Sep 2016 22:40:04 -0000
@@ -19,7 +19,7 @@ COMMENT-sqlite2 =     SQLite 2.x plugin for 
 COMMENT-tds =          TDS plugin for Qt5
 
 PKGNAME-main =         qt5-${VERSION}
-REVISION-main =                1
+REVISION-main =                2
 PKGNAME-examples =     qt5-examples-${VERSION}
 REVISION-examples =    0
 PKGNAME-html =         qt5-html-${VERSION}
Index: patches/patch-qtbase_src_plugins_platforms_xcb_qxcbscreen_cpp
===================================================================
RCS file: patches/patch-qtbase_src_plugins_platforms_xcb_qxcbscreen_cpp
diff -N patches/patch-qtbase_src_plugins_platforms_xcb_qxcbscreen_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-qtbase_src_plugins_platforms_xcb_qxcbscreen_cpp       20 Sep 
2016 22:51:57 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Fix SIGFPE when using Xvfb, backported from Qt 5.6
+(https://codereview.qt-project.org/#/c/140411/).
+
+--- qtbase/src/plugins/platforms/xcb/qxcbscreen.cpp.ports.orig Tue Sep 20 
15:49:42 2016
++++ qtbase/src/plugins/platforms/xcb/qxcbscreen.cpp    Tue Sep 20 15:50:09 2016
+@@ -544,7 +544,8 @@ void QXcbScreen::updateRefreshRate(xcb_randr_mode_t mo
+         for (; modesIter.rem; xcb_randr_mode_info_next(&modesIter)) {
+             xcb_randr_mode_info_t *modeInfo = modesIter.data;
+             if (modeInfo->id == mode) {
+-                m_refreshRate = modeInfo->dot_clock / (modeInfo->htotal * 
modeInfo->vtotal);
++                const uint32_t dotCount = modeInfo->htotal * modeInfo->vtotal;
++                m_refreshRate = (dotCount != 0) ? modeInfo->dot_clock / 
dotCount : 0;
+                 m_mode = mode;
+                 break;
+             }

Reply via email to