diff --git a/src/websockets/qwebsocketframe.cpp b/src/websockets/qwebsocketframe.cpp
index e48308fe3377bba07d81f39f1eab7c257aefd4e8..8236498f703c89c5c31605690744a598aa372147 100644
--- a/src/websockets/qwebsocketframe.cpp
+++ b/src/websockets/qwebsocketframe.cpp
@@ -312,6 +312,13 @@ bool QWebSocketFrame::isValid() const
     return m_isValid;
 }
 
+// The arm compiler of Visual Studio 2013 Update 3 crashes when
+// trying to optimize QWebSocketFrame::readFrame. Hence turn
+// those off for this snippet
+#if defined(Q_OS_WINPHONE) && defined(__ARM__)
+#  pragma optimize("", off)
+#endif
+
 #define WAIT_FOR_MORE_DATA(dataSizeInBytes)  \
     { returnState = processingState; \
       processingState = PS_WAIT_FOR_MORE_DATA; dataWaitSize = dataSizeInBytes; }
@@ -520,6 +527,10 @@ QWebSocketFrame QWebSocketFrame::readFrame(QIODevice *pIoDevice)
     return frame;
 }
 
+#if defined(Q_OS_WINPHONE) && defined(__ARM__)
+#  pragma optimize("", on)
+#endif
+
 /*!
     \internal
  */