Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-70293

crash in QTextCursor::setPosition(int pos, MoveMode m)

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P1: Critical
    • Resolution: Done
    • Affects Version/s: 5.6.3, 5.9.6, 5.11.1
    • Fix Version/s: 5.12.0 Beta 1
    • Component/s: GUI: Text handling
    • Labels:
      None
    • Platform/s:
      Windows
    • Commits:
      720e243d88e352276cfbbe0b13fa4860fb020b29

      Description

      I don't know how to reproduce this crash but I have callstack

      crash occur only on japan environment 

       

      it crash here

      http://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/text/qtextcursor.cpp#n83

      as priv == nullptr

       

      callstack:

      Qt5Gui.dll!QTextCursorPrivate::QTextCursorPrivate(const QTextCursorPrivate & rhs) Line 83 C++

      [Inline Frame] Qt5Gui.dll!QSharedDataPointer<QTextCursorPrivate>::clone() Line 240 C++

      Qt5Gui.dll!QSharedDataPointer<QTextCursorPrivate>::detach_helper() Line 246 C++

      [Inline Frame] Qt5Gui.dll!QSharedDataPointer<QTextCursorPrivate>::detach() Line 74 C++

      [Inline Frame] Qt5Gui.dll!QSharedDataPointer<QTextCursorPrivate>::operator->() Line 77 C++

      Qt5Gui.dll!QTextCursor::setPosition(int pos, QTextCursor::MoveMode m) Line 1151 C++

      Qt5Widgets.dll!QWidgetTextControlPrivate::extendWordwiseSelection(int suggestedNewPosition, double mouseXPosition) Line 749 C++

       

      problem can be fixed really easy but I don't understand why compiler choose non const method instead of const ????

      It call from http://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/text/qtextcursor.cpp#n1151

      NON CONST VARIANT
      inline T *operator->() { detach(); return d; }

      CONST VARIANT

      inline const T *operator->() const { return d; }  

      so it crash on clone

      but then it still only check property priv  and then it release cloned object

      {{void QTextCursor::setPosition(int pos, MoveMode m) }}

      {{{ if (!d || !d->priv)}}

       

      compiler MSVC 2015 64bit

      any idea ????

       

       

        Attachments

        For Gerrit Dashboard: QTBUG-70293
        # Subject Branch Project Status CR V

          Activity

            People

            Assignee:
            esabraha Eskil Abrahamsen Blomfeldt
            Reporter:
            miskol MICHAL LAZO
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Gerrit Reviews

                There are no open Gerrit changes