Uploaded image for project: 'ROOT'
  1. ROOT
  2. ROOT-8502

TBuffer::ReadStdString(std::string &s) suddenly gone / replaced in 6.08.02

    XMLWordPrintable

    Details

      Description

      In v6.08.00, TBuffer::ReadStdString had the interface:

      virtual void ReadStdString(std::string &s) = 0;

      Suddenly in v6.08.02 it seems to have been changed to

      virtual void ReadStdString(std::string *s) = 0;

      and the old version is now gone.

      We call this function in a custom streamer. So our code is now broken in 6.08.02. So we either have to change our code and get our entire user base to upgrade to 6.08.02 immediately, or keep everyone from upgrading to 6.08.02 until everyone is ready to upgrade, or write version-specific preprocessing directives in our code, which are ugly and make the code hard to read and debug.

      What was wrong with the old interface? What was worth breaking backwards compatibility? I thought one tries to avoid removing interfaces for minor version changes. Can't we have both versions and add the original interface back with just:

      virtual inline void ReadStdString(std::string &s)

      { ReadStdString(&s); }

      Best,
      Jason

        Attachments

          Activity

            People

            • Assignee:
              pcanal Philippe Canal
              Reporter:
              c6fd1bdce1febe5322c3 Jason Detwiler
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: