Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
5.15.0
-
None
Description
When QtQuickControls2Plugin::registerTypes function loads style plugins via QtQuickControls2Plugin::loadStylePlugins it compares paths for them by QString's operator== and if you for example start qml app from softlink directory (made by mklink /D) paths can be different though they are equal (on windows of course).
so QtQuickControls2Plugin tries to load itself but cache is smart enough to return this which then added to stylePlugins list and then appears qDeleteAll(stylePlugins) aaand the contents of QtQuickControls2Plugin are corrupted. which leads to crash.
this is reproducible by creating a softlink like
mklink /D "c:\test\softlink" "c:\test\real_folder"
(where real_folder contains app and all dll/qml/etc staff), going to "folder" c:\test\softlink and trying to start app. any app that uses QtQuickControls2 will suffice. i reproduced that in "Swipe to Remove" example.