Index: trunk/BNC/src/RTCM/RTCM2Decoder.cpp
===================================================================
--- trunk/BNC/src/RTCM/RTCM2Decoder.cpp	(revision 7527)
+++ trunk/BNC/src/RTCM/RTCM2Decoder.cpp	(revision 7528)
@@ -35,5 +35,5 @@
  * Created:    24-Aug-2006
  *
- * Changes:    
+ * Changes:
  *
  * -----------------------------------------------------------------------*/
@@ -51,7 +51,7 @@
 using namespace rtcm2;
 
-// 
+//
 // Constructor
-// 
+//
 
 RTCM2Decoder::RTCM2Decoder(const std::string& ID) : _ephUser(true) {
@@ -59,7 +59,7 @@
 }
 
-// 
+//
 // Destructor
-// 
+//
 
 RTCM2Decoder::~RTCM2Decoder() {
@@ -290,17 +290,17 @@
 
     // new observation
-    t_satObs* new_obs = 0;
+    t_satObs new_obs;
 
     t_frqObs* frqObs1C = new t_frqObs;
     frqObs1C->_rnxType2ch = "1C";
-    new_obs->_obs.push_back(frqObs1C);
+    new_obs._obs.push_back(frqObs1C);
 
     t_frqObs* frqObs1P = new t_frqObs;
     frqObs1P->_rnxType2ch = (sys == 'G') ? "1W" : "1P";
-    new_obs->_obs.push_back(frqObs1P);
+    new_obs._obs.push_back(frqObs1P);
 
     t_frqObs* frqObs2P = new t_frqObs;
     frqObs2P->_rnxType2ch = (sys == 'G') ? "2W" : "2P";
-    new_obs->_obs.push_back(frqObs2P);
+    new_obs._obs.push_back(frqObs2P);
 
     // missing IOD
@@ -367,15 +367,10 @@
           *obsVal = ZEROVALUE;
 
-        // Allocate new memory
-        // -------------------
-        if (!new_obs) {
-          new_obs = new t_satObs();
-          if (corr->PRN < 200) {
-            new_obs->_prn.set('G', corr->PRN);
-          } else {
-            new_obs->_prn.set('R', corr->PRN - 200);
-          }
-          new_obs->_time.set(GPSWeek_rcv, GPSWeeks_rcv);
+        if (corr->PRN < 200) {
+          new_obs._prn.set('G', corr->PRN);
+        } else {
+          new_obs._prn.set('R', corr->PRN - 200);
         }
+        new_obs._time.set(GPSWeek_rcv, GPSWeeks_rcv);
 
         // Store estimated measurements
@@ -430,7 +425,6 @@
 
     // Store new observation
-    if (new_obs) {
-      _obsList.push_back(*new_obs);
-      delete new_obs;
+    if (new_obs._time.mjd() > 0) {
+      _obsList.push_back(new_obs);
     }
   }
