Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-28612

Review toupper/tolower uses [QtCreator]

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: P2: Important P2: Important
    • None
    • Qt Creator 9.0.1
    • None
    • 11569852d (master)

      The C toupper/tolower functions are locale-dependent. Given the right locale (Türkiye, e.g.):

      • tolower(I) is either
        • ı (LATIN SMALL LETTER DOTLESS I; if representable in current charset) or
        • I (unchanged; if it isn't)
      • toupper(i) is either
        • İ (LATIN CAPITAL LETTER I WITH DOT ABOVE; if representable) or
        • i (unchanged; if it isn't)
          Both results are wrong.

      Please check your respective code bases, book patches, if any, onto this ticket, and, once merged, remove your component from the Jira field.

      The below is a slightly curated list of hits:

      ~/Qt/qt-creator$ git grep --color=always --recurse-submodules  -wE 'tolower|toupper' | grep -v /3rdparty/
      share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.cpp:            processName[i] = std::toupper(processName[i]);
      src/plugins/cppeditor/cppquickfixes.cpp:    const bool isBinary = numberLength > 2 && str[0] == '0' && tolower(str[1]) == 'b';
      src/shared/qbs/src/lib/pkgconfig/pkgconfig.cpp:        int c = std::toupper(p);
      

      We have QtMiscUtils::asciiToLower() in QtCore/private/qtools_p.h. It's been backported to 5.15. We don't have asciiToUpper(). You can either port to asciiToLower() or use caseCompareAscii() (which may not be available in Qt 6.2 and 5.15), or wait for asciiToUpper() (from https://codereview.qt-project.org/c/qt/qtbase/+/449457) to make its way through the branches, or simply copy it into one of your local utility libraries.

        For Gerrit Dashboard: QTCREATORBUG-28612
        # Subject Branch Project Status CR V

            knud Knud Dollereder
            mmutz Marc Mutz
            Vladimir Minenko Vladimir Minenko
            Alex Blasche Alex Blasche
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes