Changeset 1427 in ntrip for trunk/BNC/GPSS


Ignore:
Timestamp:
Jan 2, 2009, 6:16:47 PM (16 years ago)
Author:
mervart
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/GPSS/gpssDecoder.cpp

    r1426 r1427  
    5757  errmsg.clear();
    5858
     59  if (_mode == MODE_SEARCH) {
     60    _buffer.clear();
     61  }
    5962  _buffer.append(data, dataLen);
    6063
    6164  for (;;) {
    6265
     66    if (_buffer.size() < 1) {
     67      _mode = MODE_SEARCH;
     68      return success;
     69    }
     70
    6371    if      (_mode == MODE_SEARCH) {
    64       if (_buffer.size() < 1) {
    65         _mode = MODE_SEARCH;
    66         return success;
    67       }
    6872      if (_buffer[0] == 0x02) {
    6973        _mode = MODE_TYPE;
     74      }
     75      else {
     76        _mode = MODE_SEARCH;
    7077      }
    7178      _buffer.erase(0,1);
     
    7380
    7481    else if (_mode == MODE_TYPE) {
    75       if (_buffer.size() < 1) {
    76         _mode = MODE_SEARCH;
    77         return success;
    78       }
    7982      if        (_buffer[0] == 0x00) {
    8083        _mode = MODE_EPOCH;
     
    8285        _mode = MODE_EPH;
    8386      } else {
    84         errmsg.push_back("Unknown record type");
    8587        _mode = MODE_SEARCH;
    8688      }
     
    112114      memcpy(&epochHdr, _buffer.data(), sizeof(epochHdr));
    113115      _buffer.erase(0,sizeof(epochHdr));
     116      if (_buffer.size() < epochHdr.n_svs * sizeof(t_obsInternal)) {
     117        _mode = MODE_SEARCH;
     118        return success;
     119      }
    114120      for (int is = 1; is <= epochHdr.n_svs; is++) {
    115         if (_buffer.size() < sizeof(t_obsInternal)) {
    116           _mode = MODE_SEARCH;
    117           return success;
    118         }
    119121        t_obs* obs = new t_obs();
    120122        memcpy(&(obs->_o), _buffer.data(), sizeof(t_obsInternal));
     
    138140
    139141    else {
    140       if (_buffer.size() < 1) {
    141         _mode = MODE_SEARCH;
    142         return success;
    143       }
    144142      _buffer.erase(0,1);
    145143      _mode = MODE_SEARCH;
Note: See TracChangeset for help on using the changeset viewer.