Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. local string always corrupt
Servers for Qt installer are currently down

local string always corrupt

Scheduled Pinned Locked Moved Unsolved General and Desktop
23 Posts 6 Posters 3.3k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    Christian Ehrlicher
    Lifetime Qt Champion
    wrote on 22 Oct 2018, 06:02 last edited by
    #9

    You do not check if ijl.toLocal8Bit() is shorter than 40 bytes.

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    1 Reply Last reply
    2
    • J jsulm
      22 Oct 2018, 06:01

      @rohit713 But what do you mean by "not accessible"? Was it accessible before strcpy?
      Note this (from http://doc.qt.io/qt-5/qstring.html#toLocal8Bit):
      "The returned byte array is undefined if the string contains characters not supported by the local 8-bit encoding."

      R Offline
      R Offline
      rohit713
      wrote on 22 Oct 2018, 06:04 last edited by
      #10

      @jsulm before strcpy it contain "risk" after calling strcpy it gives not accesible.

      1 Reply Last reply
      0
      • R rohit713
        22 Oct 2018, 06:00

        @ambershark yes its work fine in qt 5 but my problem occur in qt 4 .ijl is coruupetd debugger shows the locale value not accesible while we copy this to pr its crash .

        J Offline
        J Offline
        jsulm
        Lifetime Qt Champion
        wrote on 22 Oct 2018, 06:04 last edited by jsulm
        #11

        @rohit713 As @Christian-Ehrlicher said: you implemented a nice example for stack overflow :-)
        You should use strncpy.

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        A R 2 Replies Last reply 22 Oct 2018, 06:06
        1
        • J jsulm
          22 Oct 2018, 06:04

          @rohit713 As @Christian-Ehrlicher said: you implemented a nice example for stack overflow :-)
          You should use strncpy.

          A Offline
          A Offline
          aha_1980
          Lifetime Qt Champion
          wrote on 22 Oct 2018, 06:06 last edited by
          #12

          @jsulm

          Even better: qstrncpy ;)

          Qt has to stay free or it will die.

          1 Reply Last reply
          1
          • J jsulm
            22 Oct 2018, 06:04

            @rohit713 As @Christian-Ehrlicher said: you implemented a nice example for stack overflow :-)
            You should use strncpy.

            R Offline
            R Offline
            rohit713
            wrote on 22 Oct 2018, 06:07 last edited by
            #13

            @jsulm i also tried strncpy but the same problem occurs .

            J 1 Reply Last reply 22 Oct 2018, 06:07
            0
            • R rohit713
              22 Oct 2018, 06:07

              @jsulm i also tried strncpy but the same problem occurs .

              J Offline
              J Offline
              jsulm
              Lifetime Qt Champion
              wrote on 22 Oct 2018, 06:07 last edited by
              #14

              @rohit713 Can you show how you used strncpy?

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              R 2 Replies Last reply 22 Oct 2018, 06:12
              0
              • J jsulm
                22 Oct 2018, 06:07

                @rohit713 Can you show how you used strncpy?

                R Offline
                R Offline
                rohit713
                wrote on 22 Oct 2018, 06:12 last edited by
                #15
                This post is deleted!
                1 Reply Last reply
                0
                • J jsulm
                  22 Oct 2018, 06:07

                  @rohit713 Can you show how you used strncpy?

                  R Offline
                  R Offline
                  rohit713
                  wrote on 22 Oct 2018, 06:13 last edited by rohit713
                  #16

                  @jsulm strncpy(pr,ijl.toLocal8Bit().data(),ijl.length());

                  J A 2 Replies Last reply 22 Oct 2018, 06:16
                  0
                  • R rohit713
                    22 Oct 2018, 06:13

                    @jsulm strncpy(pr,ijl.toLocal8Bit().data(),ijl.length());

                    J Offline
                    J Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on 22 Oct 2018, 06:16 last edited by
                    #17

                    @rohit713 This is same stack overflow as before...

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    R 1 Reply Last reply 22 Oct 2018, 06:16
                    0
                    • J jsulm
                      22 Oct 2018, 06:16

                      @rohit713 This is same stack overflow as before...

                      R Offline
                      R Offline
                      rohit713
                      wrote on 22 Oct 2018, 06:16 last edited by rohit713
                      #18

                      @jsulm can u share the stack overflow link

                      J A 2 Replies Last reply 22 Oct 2018, 06:17
                      0
                      • R rohit713
                        22 Oct 2018, 06:16

                        @jsulm can u share the stack overflow link

                        J Offline
                        J Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on 22 Oct 2018, 06:17 last edited by
                        #19

                        @rohit713 What link? Think about what will happen if ijl.toLocal8Bit().data() is longer than pr.

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        0
                        • R rohit713
                          22 Oct 2018, 06:13

                          @jsulm strncpy(pr,ijl.toLocal8Bit().data(),ijl.length());

                          A Offline
                          A Offline
                          aha_1980
                          Lifetime Qt Champion
                          wrote on 22 Oct 2018, 06:17 last edited by
                          #20

                          @rohit713

                          Use qstrncpy(pr, ijl.toLocal8Bit().constData(),sizeof(pr));

                          Qt has to stay free or it will die.

                          R 1 Reply Last reply 22 Oct 2018, 06:24
                          2
                          • A aha_1980
                            22 Oct 2018, 06:17

                            @rohit713

                            Use qstrncpy(pr, ijl.toLocal8Bit().constData(),sizeof(pr));

                            R Offline
                            R Offline
                            rohit713
                            wrote on 22 Oct 2018, 06:24 last edited by
                            #21

                            @aha_1980 same problem occur with qstrncpy.

                            J 1 Reply Last reply 22 Oct 2018, 06:43
                            0
                            • R rohit713
                              22 Oct 2018, 06:24

                              @aha_1980 same problem occur with qstrncpy.

                              J Offline
                              J Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on 22 Oct 2018, 06:43 last edited by
                              #22

                              @rohit713 So, you used exactly this line:

                              qstrncpy(pr, ijl.toLocal8Bit().constData(),sizeof(pr));
                              

                              ?
                              Use debugger and step by step execution to see what happens.

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              1 Reply Last reply
                              2
                              • R rohit713
                                22 Oct 2018, 06:16

                                @jsulm can u share the stack overflow link

                                A Offline
                                A Offline
                                ambershark
                                wrote on 24 Oct 2018, 04:47 last edited by ambershark
                                #23

                                @rohit713 said in local string always corrupt:

                                @jsulm can u share the stack overflow link

                                Lol he means an actual stack overflow, i.e. you have the potential for overrunning the memory in your buffer with how you used strcpy and strncpy. Not stackoverflow.com the website. ;)

                                You also don't leave room for the null terminator (or copy it). So you're resulting string if used in any string function is almost guaranteed to crash, at least in release mode. I don't think either of these are your actual issue though.

                                before strcpy it contain "risk" after calling strcpy it gives not accesible.

                                What does that mean? What gives not accessible? The debugger? If it was truly not accessible then it would cause a crash. After it's "not accessible" can you output it via qdebug? My guess here is QString is just reallocating it's internal memory and you are now watching the wrong memory location.

                                If you could show us the backtrace from the crash log that would help. Like I said I tested the code and it worked. I realize Qt5 is different that 4, but that string memory should be good during your copy even in Qt4. It worked in 5 I suspect if I had easy access to Qt4 it would work there too. Can you give us more information on what the actual problem is? "Not accessible" doesn't mean much.

                                My L-GPL'd C++ Logger github.com/ambershark-mike/sharklog

                                1 Reply Last reply
                                5

                                18/23

                                22 Oct 2018, 06:16

                                • Login

                                • Login or register to search.
                                18 out of 23
                                • First post
                                  18/23
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • Users
                                • Groups
                                • Search
                                • Get Qt Extensions
                                • Unsolved