Ignore:
Timestamp:
Apr 3, 2012, 3:54:50 PM (12 years ago)
Author:
rybkin
Message:

See C.L. 482

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CMT/HEAD/source/cmt_string.cxx

    r527 r607  
    244244void cmt_string::resize (int n)
    245245{
     246  _size = n;
    246247  allocate (n + 1);
     248  _data[n] = 0;
    247249}
    248250
     
    544546  if ((_data == 0) ||
    545547      (pos < 0) ||
    546       (pos >= _size))
     548      (pos >= _size) ||
     549      length == 0)
    547550    {
    548551      return ((cmt_string) "");
     
    550553  else
    551554    {
     555      //      cerr << "|cmt_string::substr>: `" << *this << "' pos: " << pos << " length: " << length;
     556
     557      if ((pos + length) >= _size ||
     558          length < 0)
     559        {
     560          //      cmt_string result (&_data[pos]);
     561          //cerr << " |---> `" << result << "'" << endl;
     562          //      return (result);
     563          return (&_data[pos]);
     564        }
     565      else
     566        {
     567          cmt_string result;
     568          result.resize (length);
     569          for (int i = 0; i < length; i++)
     570            result[i] = _data[pos + i];
     571          //cerr << " |---> `" << result << "'" << endl;
     572          return (result);
     573        }
     574
     575      /*
    552576      cmt_string result (&_data[pos]);
    553577      result.erase (length);
     578      cerr << " |---> `" << result << "'" << endl;
    554579      return (result);
     580      */
    555581    }
    556582}
     
    574600  if ((_data == 0) ||
    575601      (pos < 0) ||
    576       (pos >= _size))
     602      (pos >= _size) ||
     603      length == 0)
    577604    {
    578605      dest = "";
     
    580607  else
    581608    {
     609      //      cerr << "|void cmt_string::substr>: `" << *this << "' pos: " << pos << " length: " << length;
     610
     611      if ((pos + length) >= _size ||
     612          length < 0)
     613        {
     614          dest = (const char*) &_data[pos];
     615        }
     616      else
     617        {
     618          dest.resize (length);
     619          for (int i = 0; i < length; i++)
     620            dest[i] = _data[pos + i];
     621        }
     622
     623      /*
    582624      dest = (const char*) &_data[pos];
    583625      dest.erase (length);
     626      */
     627      //      cerr << " |---> `" << dest << "'" << endl;
    584628    }
    585629}
Note: See TracChangeset for help on using the changeset viewer.