Forum Discussion

MrLlama's avatar
MrLlama
Channel Surfer
5 years ago

roStreamSocket documentation example has a bug

The roStreamSocket "echo server" example contains a bug.  Specifically, when the socket IDs happen to be over 8 digits long, the `Str(socket_id)` representation loses precision because it uses scientific notation.  Given that subsequent connections usually have similar socket IDs, this can lead to different connections having the same stringified representation:

Brightscript Debugger> ? connection.GetID()
 87031812

Brightscript Debugger> ? Str(connection.GetID())
 8.703181e+07

Brightscript Debugger> ? connection.GetID().ToStr()
87031812

Note that in the above example, the Str() result is missing the final "2" digit.

3 Replies

  • RokuPam's avatar
    RokuPam
    Streaming Star

    Hi MrLlama,

    Thanks for your feedback and reporting this documentation error! Where exactly in the documentation are you seeing this error? I took a look at the article, but was unable to find an instance of scientific notation (rather than the full string). 

    • MrLlama's avatar
      MrLlama
      Channel Surfer

      The issue isn't that the article itself uses scientific notation, it's that it fails to account for Str(some_big_number) returning a string in scientific notation.  This causes a loss of precision and can cause multiple connections with different IDs to end up with the same Str(connection_id).

      • RokuPam's avatar
        RokuPam
        Streaming Star

        Thank you for clarifying! We've created a ticket with the responsible engineering team to investigate further.