Index: trunk/BNC/RTCM/RTCM2Decoder.cpp
===================================================================
--- trunk/BNC/RTCM/RTCM2Decoder.cpp	(revision 626)
+++ trunk/BNC/RTCM/RTCM2Decoder.cpp	(revision 627)
@@ -87,4 +87,5 @@
         for (int iSat=0; iSat < _ObsBlock.nSat; iSat++) {
           p_obs obs = new t_obs();
+          _obsList.push_back(obs);
           if (_ObsBlock.PRN[iSat] > 100) {
             obs->_o.satNum = _ObsBlock.PRN[iSat] % 100;
@@ -102,6 +103,4 @@
           obs->_o.L1       = _ObsBlock.resolvedPhase_L1(iSat);
           obs->_o.L2       = _ObsBlock.resolvedPhase_L2(iSat);
-
-          _obsList.push_back(obs);
         }
         _ObsBlock.clear();
Index: trunk/BNC/RTCM3/RTCM3Decoder.cpp
===================================================================
--- trunk/BNC/RTCM3/RTCM3Decoder.cpp	(revision 626)
+++ trunk/BNC/RTCM3/RTCM3Decoder.cpp	(revision 627)
@@ -112,4 +112,5 @@
           for (int ii = 0; ii < _Parser.Data.numsats; ii++) {
             p_obs obs = new t_obs();
+            _obsList.push_back(obs);
             if      (_Parser.Data.satellites[ii] <= PRN_GPS_END) {
               obs->_o.satSys = 'G';
@@ -145,37 +146,37 @@
                 }
               }
-            if(!v)
-            { continue; }
-            else
-            {
-              if      (_Parser.dataflag[jj] & GNSSDF_C1DATA) {
-                obs->_o.C1 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
-              }
-              else if (_Parser.dataflag[jj] & GNSSDF_C2DATA) {
-                obs->_o.C2 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
-              }
-              else if (_Parser.dataflag[jj] & GNSSDF_P1DATA) {
-                obs->_o.P1 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
-              }
-              else if (_Parser.dataflag[jj] & GNSSDF_P2DATA) {
-                obs->_o.P2 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
-              }
-              else if (df & (GNSSDF_L1CDATA|GNSSDF_L1PDATA)) {
-                obs->_o.L1   = _Parser.Data.measdata[ii][pos];
-                obs->_o.SNR1 = _Parser.Data.snrL1[ii];
-              }
-              else if (df & (GNSSDF_L2CDATA|GNSSDF_L2PDATA)) {
-                obs->_o.L2   = _Parser.Data.measdata[ii][pos];
-                obs->_o.SNR2 = _Parser.Data.snrL2[ii];
-              }
-              else if (df & (GNSSDF_S1CDATA|GNSSDF_S1PDATA)) {
-                obs->_o.S1   = _Parser.Data.measdata[ii][pos];
-              }
-              else if (df & (GNSSDF_S2CDATA|GNSSDF_S2PDATA)) {
-                obs->_o.S2   = _Parser.Data.measdata[ii][pos];
+              if (!v) { 
+                continue; 
+              }
+              else
+              {
+                if      (_Parser.dataflag[jj] & GNSSDF_C1DATA) {
+                  obs->_o.C1 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
+                }
+                else if (_Parser.dataflag[jj] & GNSSDF_C2DATA) {
+                  obs->_o.C2 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
+                }
+                else if (_Parser.dataflag[jj] & GNSSDF_P1DATA) {
+                  obs->_o.P1 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
+                }
+                else if (_Parser.dataflag[jj] & GNSSDF_P2DATA) {
+                  obs->_o.P2 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
+                }
+                else if (df & (GNSSDF_L1CDATA|GNSSDF_L1PDATA)) {
+                  obs->_o.L1   = _Parser.Data.measdata[ii][pos];
+                  obs->_o.SNR1 = _Parser.Data.snrL1[ii];
+                }
+                else if (df & (GNSSDF_L2CDATA|GNSSDF_L2PDATA)) {
+                  obs->_o.L2   = _Parser.Data.measdata[ii][pos];
+                  obs->_o.SNR2 = _Parser.Data.snrL2[ii];
+                }
+                else if (df & (GNSSDF_S1CDATA|GNSSDF_S1PDATA)) {
+                  obs->_o.S1   = _Parser.Data.measdata[ii][pos];
+                }
+                else if (df & (GNSSDF_S2CDATA|GNSSDF_S2PDATA)) {
+                  obs->_o.S2   = _Parser.Data.measdata[ii][pos];
+                }
               }
             }
-            }
-            _obsList.push_back(obs);
           }
         }
Index: trunk/BNC/RTIGS/RTIGSDecoder.cpp
===================================================================
--- trunk/BNC/RTIGS/RTIGSDecoder.cpp	(revision 626)
+++ trunk/BNC/RTIGS/RTIGSDecoder.cpp	(revision 627)
@@ -105,4 +105,5 @@
     for (short ii = 0; ii < numObs; ii++) {
       p_obs obs = new t_obs();
+      _obsList.push_back(obs);
       obs->_o.satSys   = 'G';
       obs->_o.satNum   = _GPSTrans.DecObs.Obs[ii].sat_prn;
@@ -118,6 +119,4 @@
       obs->_o.SNR1     = int(ceil(_GPSTrans.DecObs.Obs[ii].l1_sn / 60.0 * 9.0));
       obs->_o.SNR2     = int(ceil(_GPSTrans.DecObs.Obs[ii].l2_sn / 60.0 * 9.0));
-
-      _obsList.push_back(obs);
     }
   }
Index: trunk/BNC/run_valgrind
===================================================================
--- trunk/BNC/run_valgrind	(revision 626)
+++ trunk/BNC/run_valgrind	(revision 627)
@@ -2,5 +2,5 @@
 if [ "$1" == "start" ]
 then
-  valgrind --leak-check=full --show-reachable=yes ./bnc -nw 2> valgrind.txt &
+  valgrind --leak-check=full ./bnc -nw 2> valgrind.txt &
 elif [ "$1" == "stop" ]
 then
Index: trunk/BNC/test_bnc_qt.cpp
===================================================================
--- trunk/BNC/test_bnc_qt.cpp	(revision 626)
+++ trunk/BNC/test_bnc_qt.cpp	(revision 627)
@@ -85,5 +85,5 @@
   // Receive Data
   // ------------
-  Observation obs;
+  t_obsInternal obs;
   char flag = ' ';
   cout.setf(ios::showpoint | ios::fixed);
