Index: trunk/BNC/src/RTCM3/RTCM3Decoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 7751)
+++ trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 7753)
@@ -35,5 +35,5 @@
  * Created:    24-Aug-2006
  *
- * Changes:    
+ * Changes:
  *
  * -----------------------------------------------------------------------*/
@@ -52,5 +52,5 @@
 #include "bnccore.h"
 #include "bncutils.h"
-#include "bncsettings.h" 
+#include "bncsettings.h"
 
 using namespace std;
@@ -63,5 +63,5 @@
 // Constructor
 ////////////////////////////////////////////////////////////////////////////
-RTCM3Decoder::RTCM3Decoder(const QString& staID, bncRawFile* rawFile) : 
+RTCM3Decoder::RTCM3Decoder(const QString& staID, bncRawFile* rawFile) :
                 GPSDecoder() {
 
@@ -89,5 +89,5 @@
 }
 
-// 
+//
 ////////////////////////////////////////////////////////////////////////////
 bool RTCM3Decoder::DecodeRTCM3GPS(unsigned char* data, int size)
@@ -109,7 +109,8 @@
   {
     decoded = true;
-    _obsList = _CurrentObsList;
+    _obsList.append(_CurrentObsList);
     _CurrentObsList.clear();
   }
+
   _CurrentTime = CurrentObsTime;
 
@@ -199,8 +200,9 @@
     _CurrentObsList.push_back(CurrentObs);
   }
+
   if(!syncf)
   {
     decoded = true;
-    _obsList = _CurrentObsList;
+    _obsList.append(_CurrentObsList);
     _CurrentTime.reset();
     _CurrentObsList.clear();
@@ -266,5 +268,5 @@
 /**
  * MSM signal types for GLONASS
- * 
+ *
  * NOTE: Uses 0.0, 1.0 for wavelength as sat index dependence is done later!
  */
@@ -418,5 +420,5 @@
 #define UINT64(c) c ## ULL
 
-// 
+//
 ////////////////////////////////////////////////////////////////////////////
 bool RTCM3Decoder::DecodeRTCM3MSM(unsigned char* data, int size)
@@ -473,5 +475,5 @@
   /**
    * Ignore unknown types except for sync flag
-   * 
+   *
    * We actually support types 1-3 in following code, but as they are missing
    * the full cycles and can't be used later we skip interpretation here already.
@@ -849,5 +851,5 @@
 }
 
-// 
+//
 ////////////////////////////////////////////////////////////////////////////
 bool RTCM3Decoder::DecodeRTCM3GLONASS(unsigned char* data, int size)
@@ -869,5 +871,5 @@
   {
     decoded = true;
-    _obsList = _CurrentObsList;
+    _obsList.append(_CurrentObsList);
     _CurrentObsList.clear();
   }
@@ -961,5 +963,5 @@
   {
     decoded = true;
-    _obsList = _CurrentObsList;
+    _obsList.append(_CurrentObsList);
     _CurrentTime.reset();
     _CurrentObsList.clear();
@@ -1106,10 +1108,10 @@
     eph._tt = eph._TOC;
 
-    eph._xv(1) = eph._x_pos * 1.e3; 
-    eph._xv(2) = eph._y_pos * 1.e3; 
-    eph._xv(3) = eph._z_pos * 1.e3; 
-    eph._xv(4) = eph._x_velocity * 1.e3; 
-    eph._xv(5) = eph._y_velocity * 1.e3; 
-    eph._xv(6) = eph._z_velocity * 1.e3; 
+    eph._xv(1) = eph._x_pos * 1.e3;
+    eph._xv(2) = eph._y_pos * 1.e3;
+    eph._xv(3) = eph._z_pos * 1.e3;
+    eph._xv(4) = eph._x_velocity * 1.e3;
+    eph._xv(5) = eph._y_velocity * 1.e3;
+    eph._xv(6) = eph._z_velocity * 1.e3;
 
     emit newGlonassEph(eph);
@@ -1440,5 +1442,5 @@
 }
 
-// 
+//
 ////////////////////////////////////////////////////////////////////////////
 t_irc RTCM3Decoder::Decode(char* buffer, int bufLen, vector<string>& errmsg)
@@ -1472,5 +1474,5 @@
       {
         if (!_coDecoders.contains(_staID.toAscii()))
-          _coDecoders[_staID.toAscii()] = new RTCM3coDecoder(_staID); 
+          _coDecoders[_staID.toAscii()] = new RTCM3coDecoder(_staID);
         RTCM3coDecoder* coDecoder = _coDecoders[_staID.toAscii()];
         if(coDecoder->Decode(reinterpret_cast<char *>(_Message), _BlockSize,
@@ -1542,5 +1544,5 @@
 };
 
-// 
+//
 ////////////////////////////////////////////////////////////////////////////
 uint32_t RTCM3Decoder::CRC24(long size, const unsigned char *buf)
@@ -1562,5 +1564,5 @@
 }
 
-// 
+//
 ////////////////////////////////////////////////////////////////////////////
 int RTCM3Decoder::GetMessage(void)
Index: trunk/BNC/src/bncgetthread.cpp
===================================================================
--- trunk/BNC/src/bncgetthread.cpp	(revision 7751)
+++ trunk/BNC/src/bncgetthread.cpp	(revision 7753)
@@ -493,7 +493,10 @@
         continue;
       }
-      decoder()->_obsList.clear();
+
       t_irc irc = decoder()->Decode(data.data(), data.size(), errmsg);
 
+      if (irc != success) {
+        continue;
+      }
       // Perform various scans and checks
       // --------------------------------
@@ -506,7 +509,5 @@
       }
 
-      if (irc == success) {
-        miscScanRTCM();
-      }
+      miscScanRTCM();
 
       // Loop over all observations (observations output)
@@ -570,5 +571,4 @@
       }
 
-      decoder()->_obsList.clear();
     }
     catch (Exception& exc) {
