未使用的JS var in unused function + conditional会导致QQmlEngine在加载时崩溃

时间:2017-01-06 04:24:33

标签: javascript qt crash qml qtquick2

这是我到目前为止遇到的最奇怪的Qt错误,未执行的函数中未使用的var会导致QQmlEngine::load()的严重崩溃。

需要几行代码才能重现它:

import QtQuick 2.7
import QtQuick.Window 2.2

Window {
  id: main
  visible: true
  width: 500
  height: 300

  function foo() {
    var c = main.width > 1 ? 27 : -147
  }
}

它在5.7和5.7.1上崩溃,"股票" GCC在Qt网站上建立了windoze 7 x64和ubuntu 16.04。添加简单的console.log(c)可以防止崩溃。再次注意,该功能完全合法,无法访问任何鱼腥物体,甚至不会被执行以产生崩溃。当引擎解析QML代码时,看起来非常错误。 条件在这里是关键,没有它就不会崩溃。

除了隐含的"这里发生了什么?"在发布错误报告之前,我还会借此机会向不同平台或Qt版本的人询问是否会影响其他人。

0 个答案:

没有答案