Index: trunk/BNC/GPSS/gpssDecoder.cpp
===================================================================
--- trunk/BNC/GPSS/gpssDecoder.cpp	(revision 2710)
+++ trunk/BNC/GPSS/gpssDecoder.cpp	(revision 2711)
@@ -99,6 +99,6 @@
             for (int is = 0; is < epochHdr.n_svs; is++) {
               obsFound = true;
-              t_obs* obs = new t_obs();
-              memcpy(obs, _buffer.data() + 2 + sizeof(recordSize) + 
+              t_obs obs;
+              memcpy(&obs, _buffer.data() + 2 + sizeof(recordSize) + 
                      sizeof(epochHdr) + is * sizeof(t_obs), sizeof(t_obs));
               _obsList.push_back(obs);
Index: trunk/BNC/RTCM/GPSDecoder.h
===================================================================
--- trunk/BNC/RTCM/GPSDecoder.h	(revision 2710)
+++ trunk/BNC/RTCM/GPSDecoder.h	(revision 2711)
@@ -36,7 +36,5 @@
 class t_obs {
  public:
-  enum t_obs_status {initial, posted, received};
   t_obs() {
-    _status     = initial;
     satSys      = 'G';
     satNum      = 0;
@@ -76,6 +74,4 @@
   double S1() const {return (L1P != 0.0 ? S1P : S1C);}
   double S2() const {return (L2P != 0.0 ? S2P : S2C);}
-
-  t_obs_status  _status;
 
   char   StatID[20+1]; // Station ID
@@ -118,13 +114,5 @@
   virtual t_irc Decode(char* buffer, int bufLen, std::vector<std::string>& errmsg) = 0;
 
-  virtual ~GPSDecoder() {
-    QListIterator<t_obs*> it(_obsList);
-    while (it.hasNext()) {
-      t_obs* obs = it.next();
-      if (obs && obs->_status == t_obs::initial) {
-        delete obs;
-      }
-    }
-  }
+  virtual ~GPSDecoder() {}
 
   virtual int corrGPSEpochTime() const {return -1;}
@@ -149,5 +137,5 @@
   };
 
-  QList<t_obs*>    _obsList;
+  QList<t_obs>     _obsList;
   QList<int>       _typeList;  // RTCM   message types
   QStringList      _antType;   // RTCM   antenna descriptor
Index: trunk/BNC/RTCM/RTCM2Decoder.cpp
===================================================================
--- trunk/BNC/RTCM/RTCM2Decoder.cpp	(revision 2710)
+++ trunk/BNC/RTCM/RTCM2Decoder.cpp	(revision 2711)
@@ -140,23 +140,24 @@
           
         for (int iSat=0; iSat < _ObsBlock.nSat; iSat++) {
-          t_obs* obs = new t_obs();
-          _obsList.push_back(obs);
+          t_obs obs;
           if (_ObsBlock.PRN[iSat] > 100) {
-            obs->satNum      = _ObsBlock.PRN[iSat] % 100;
-            obs->satSys      = 'R';
+            obs.satNum      = _ObsBlock.PRN[iSat] % 100;
+            obs.satSys      = 'R';
 	  }		        
 	  else {	        
-            obs->satNum      = _ObsBlock.PRN[iSat];
-            obs->satSys      = 'G';
+            obs.satNum      = _ObsBlock.PRN[iSat];
+            obs.satSys      = 'G';
 	  }		        
-          obs->GPSWeek       = epochWeek;
-          obs->GPSWeeks      = epochSecs;
-          obs->C1            = _ObsBlock.rng_C1[iSat];
-          obs->P1            = _ObsBlock.rng_P1[iSat];
-          obs->P2            = _ObsBlock.rng_P2[iSat];
-          obs->L1P           = _ObsBlock.resolvedPhase_L1(iSat);
-          obs->L2P           = _ObsBlock.resolvedPhase_L2(iSat);
-	  obs->slip_cnt_L1   = _ObsBlock.slip_L1[iSat];
-	  obs->slip_cnt_L2   = _ObsBlock.slip_L2[iSat];
+          obs.GPSWeek       = epochWeek;
+          obs.GPSWeeks      = epochSecs;
+          obs.C1            = _ObsBlock.rng_C1[iSat];
+          obs.P1            = _ObsBlock.rng_P1[iSat];
+          obs.P2            = _ObsBlock.rng_P2[iSat];
+          obs.L1P           = _ObsBlock.resolvedPhase_L1(iSat);
+          obs.L2P           = _ObsBlock.resolvedPhase_L2(iSat);
+	  obs.slip_cnt_L1   = _ObsBlock.slip_L1[iSat];
+	  obs.slip_cnt_L2   = _ObsBlock.slip_L2[iSat];
+
+          _obsList.push_back(obs);
         }
         _ObsBlock.clear();
@@ -435,10 +436,6 @@
     // Store new observation
     if ( new_obs ) {
-      _obsList.push_back( new_obs );
-
-      ////ostringstream hasIODstr;
-      ////copy(hasIOD.begin(), hasIOD.end(), ostream_iterator<string>(hasIODstr, "    "));
-      ////errmsg.push_back("decoded PRN " + PRN + " : " + hasIODstr.str());
-    }
-  }
-}
+      _obsList.push_back(*new_obs);
+    }
+  }
+}
Index: trunk/BNC/RTCM3/RTCM3Decoder.cpp
===================================================================
--- trunk/BNC/RTCM3/RTCM3Decoder.cpp	(revision 2710)
+++ trunk/BNC/RTCM3/RTCM3Decoder.cpp	(revision 2711)
@@ -237,12 +237,12 @@
             for (int iSat = 0; iSat < gnssData.numsats; iSat++) {
 
-              t_obs* obs   = new t_obs();
-              int    satID = gnssData.satellites[iSat];
+              t_obs obs;
+              int   satID = gnssData.satellites[iSat];
 
               // GPS
               // ---
               if      (satID >= PRN_GPS_START     && satID <= PRN_GPS_END) {
-                obs->satSys = 'G';
-                obs->satNum = satID;
+                obs.satSys = 'G';
+                obs.satNum = satID;
               }
 
@@ -250,13 +250,12 @@
               // -------
               else if (satID >= PRN_GLONASS_START && satID <= PRN_GLONASS_END) {
-                obs->satSys = 'R';
-                obs->satNum = satID - PRN_GLONASS_START + 1;
-                if (obs->satNum <= PRN_GLONASS_NUM && 
-                    parser.GLOFreq[obs->satNum-1] != 0) {
-                  obs->slotNum   = parser.GLOFreq[obs->satNum-1] - 100;
+                obs.satSys = 'R';
+                obs.satNum = satID - PRN_GLONASS_START + 1;
+                if (obs.satNum <= PRN_GLONASS_NUM && 
+                    parser.GLOFreq[obs.satNum-1] != 0) {
+                  obs.slotNum   = parser.GLOFreq[obs.satNum-1] - 100;
                 }
                 else { 
-                  delete obs;
-                  obs = 0;
+                  continue;
                 }
               }
@@ -265,6 +264,6 @@
               // -------
               else if (satID >= PRN_GALILEO_START && satID <= PRN_GALILEO_END) {
-                obs->satSys = 'E';
-                obs->satNum = satID - PRN_GALILEO_START + 1;
+                obs.satSys = 'E';
+                obs.satNum = satID - PRN_GALILEO_START + 1;
               }
 
@@ -272,6 +271,6 @@
               // ----
               else if (satID >= PRN_WAAS_START && satID <= PRN_WAAS_END) {
-                obs->satSys = 'S';
-                obs->satNum = satID - PRN_WAAS_START + 20;
+                obs.satSys = 'S';
+                obs.satNum = satID - PRN_WAAS_START + 20;
               }
 
@@ -279,6 +278,6 @@
               // -------------
               else if (satID >= PRN_GIOVE_START && satID <= PRN_GIOVE_END) {
-                obs->satSys = 'E';
-                obs->satNum = satID - PRN_GIOVE_START + PRN_GIOVE_OFFSET;
+                obs.satSys = 'E';
+                obs.satNum = satID - PRN_GIOVE_START + PRN_GIOVE_OFFSET;
               }
 
@@ -286,20 +285,12 @@
               // --------------
               else {
-                delete obs;
-                obs = 0;
-              }
-
-              if (obs) {
-                _obsList.push_back(obs);
-              }
-              else {
                 continue;
               }
 
-              obs->GPSWeek  = gnssData.week;
-              obs->GPSWeeks = gnssData.timeofweek / 1000.0;
-
-              QString prn = QString("%1%2").arg(obs->satSys)
-                            .arg(obs->satNum, 2, 10, QChar('0'));
+              obs.GPSWeek  = gnssData.week;
+              obs.GPSWeeks = gnssData.timeofweek / 1000.0;
+
+              QString prn = QString("%1%2").arg(obs.satSys)
+                            .arg(obs.satNum, 2, 10, QChar('0'));
 
               // Handle loss-of-lock flags
@@ -318,5 +309,5 @@
                   _slip_cnt_L1[prn] = 1;
                 }
-                obs->slip_cnt_L1 = _slip_cnt_L1[prn];
+                obs.slip_cnt_L1 = _slip_cnt_L1[prn];
               }
               if (GNSSDF2_LOCKLOSSL2 & gnssData.dataflags2[iSat]) {
@@ -327,5 +318,5 @@
                   _slip_cnt_L2[prn] = 1;
                 }
-                obs->slip_cnt_L2 = _slip_cnt_L2[prn];
+                obs.slip_cnt_L2 = _slip_cnt_L2[prn];
               }
               if (GNSSDF2_LOCKLOSSL5 & gnssData.dataflags2[iSat]) {
@@ -336,5 +327,5 @@
                   _slip_cnt_L5[prn] = 1;
                 }
-                obs->slip_cnt_L5 = _slip_cnt_L5[prn];
+                obs.slip_cnt_L5 = _slip_cnt_L5[prn];
               }
 
@@ -357,65 +348,66 @@
 
                   if      (iEntry == GNSSENTRY_C1DATA) {
-                    obs->C1  = gnssData.measdata[iSat][iEntry];
+                    obs.C1  = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_C2DATA) {
-                    obs->C2  = gnssData.measdata[iSat][iEntry];
+                    obs.C2  = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_P1DATA) {
-                    obs->P1  = gnssData.measdata[iSat][iEntry];
+                    obs.P1  = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_P2DATA) {
-                    obs->P2  = gnssData.measdata[iSat][iEntry];
+                    obs.P2  = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_L1CDATA) {
-                    obs->L1C = gnssData.measdata[iSat][iEntry];
+                    obs.L1C = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_L1PDATA) {
-                    obs->L1P = gnssData.measdata[iSat][iEntry];
+                    obs.L1P = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_L2CDATA) {
-                    obs->L2C = gnssData.measdata[iSat][iEntry];
+                    obs.L2C = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_L2PDATA) {
-                    obs->L2P = gnssData.measdata[iSat][iEntry];
+                    obs.L2P = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_D1CDATA) {
-                    obs->D1C = gnssData.measdata[iSat][iEntry];
+                    obs.D1C = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_D1PDATA) {
-                    obs->D1P = gnssData.measdata[iSat][iEntry];
+                    obs.D1P = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_S1CDATA) {
-                    obs->S1C = gnssData.measdata[iSat][iEntry];
+                    obs.S1C = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_S1PDATA) {
-                    obs->S1P = gnssData.measdata[iSat][iEntry];
+                    obs.S1P = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_D2CDATA) {
-                    obs->D2C = gnssData.measdata[iSat][iEntry];
+                    obs.D2C = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_D2PDATA) {
-                    obs->D2P = gnssData.measdata[iSat][iEntry];
+                    obs.D2P = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_S2CDATA) {
-                    obs->S2C = gnssData.measdata[iSat][iEntry];
+                    obs.S2C = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_S2PDATA) {
-                    obs->S2P = gnssData.measdata[iSat][iEntry];
+                    obs.S2P = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_C5DATA) {
-                    obs->C5  = gnssData.measdata[iSat][iEntry];
+                    obs.C5  = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_L5DATA) {
-                    obs->L5  = gnssData.measdata[iSat][iEntry];
+                    obs.L5  = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_D5DATA) {
-                    obs->D5  = gnssData.measdata[iSat][iEntry];
+                    obs.D5  = gnssData.measdata[iSat][iEntry];
                   }
                   else if (iEntry == GNSSENTRY_S5DATA) {
-                    obs->S5  = gnssData.measdata[iSat][iEntry];
-                  }
-                }
-              }
+                    obs.S5  = gnssData.measdata[iSat][iEntry];
+                  }
+                }
+              }
+              _obsList.push_back(obs);
             }
           }
Index: trunk/BNC/RTIGS/RTIGSDecoder.cpp
===================================================================
--- trunk/BNC/RTIGS/RTIGSDecoder.cpp	(revision 2710)
+++ trunk/BNC/RTIGS/RTIGSDecoder.cpp	(revision 2711)
@@ -116,17 +116,17 @@
 
     for (short ii = 0; ii < numObs; ii++) {
-      t_obs* obs = new t_obs();
+      t_obs obs;
+      obs.satSys   = 'G';
+      obs.satNum   = _GPSTrans.DecObs.Obs[ii].sat_prn;
+      obs.GPSWeek  = _GPSTrans.DecObs.Obs[ii].GPSTime / (7 * 86400);
+      obs.GPSWeeks = _GPSTrans.DecObs.Obs[ii].GPSTime % (7 * 86400);
+      obs.C1       = _GPSTrans.DecObs.Obs[ii].l1_pseudo_range;
+      obs.P1       = _GPSTrans.DecObs.Obs[ii].p1_pseudo_range;
+      obs.P2       = _GPSTrans.DecObs.Obs[ii].p2_pseudo_range;
+      obs.L1P      = _GPSTrans.DecObs.Obs[ii].p1_phase;
+      obs.L2P      = _GPSTrans.DecObs.Obs[ii].p2_phase;
+      obs.S1P      = _GPSTrans.DecObs.Obs[ii].l1_sn;
+      obs.S2P      = _GPSTrans.DecObs.Obs[ii].l2_sn;
       _obsList.push_back(obs);
-      obs->satSys   = 'G';
-      obs->satNum   = _GPSTrans.DecObs.Obs[ii].sat_prn;
-      obs->GPSWeek  = _GPSTrans.DecObs.Obs[ii].GPSTime / (7 * 86400);
-      obs->GPSWeeks = _GPSTrans.DecObs.Obs[ii].GPSTime % (7 * 86400);
-      obs->C1       = _GPSTrans.DecObs.Obs[ii].l1_pseudo_range;
-      obs->P1       = _GPSTrans.DecObs.Obs[ii].p1_pseudo_range;
-      obs->P2       = _GPSTrans.DecObs.Obs[ii].p2_pseudo_range;
-      obs->L1P      = _GPSTrans.DecObs.Obs[ii].p1_phase;
-      obs->L2P      = _GPSTrans.DecObs.Obs[ii].p2_phase;
-      obs->S1P      = _GPSTrans.DecObs.Obs[ii].l1_sn;
-      obs->S2P      = _GPSTrans.DecObs.Obs[ii].l2_sn;
     }
   }
Index: trunk/BNC/bnccaster.cpp
===================================================================
--- trunk/BNC/bnccaster.cpp	(revision 2710)
+++ trunk/BNC/bnccaster.cpp	(revision 2711)
@@ -55,24 +55,24 @@
  public:
 
-  t_oldObsInternal(const t_obs* obs) {
-    strcpy(StatID, obs->StatID);
+  t_oldObsInternal(const t_obs& obs) {
+    strcpy(StatID, obs.StatID);
     flags         = 0;
-    satSys        = obs->satSys;
-    satNum        = obs->satNum;
-    slot          = obs->slotNum;
-    GPSWeek       = obs->GPSWeek;
-    GPSWeeks      = obs->GPSWeeks;
-    C1            = obs->C1;
-    C2            = obs->C2;
-    P1            = obs->P1;
-    P2            = obs->P2;
-    L1            = obs->L1();
-    L2            = obs->L2();
-    slip_cnt_L1   = obs->slip_cnt_L1;
-    slip_cnt_L2   = obs->slip_cnt_L2;
+    satSys        = obs.satSys;
+    satNum        = obs.satNum;
+    slot          = obs.slotNum;
+    GPSWeek       = obs.GPSWeek;
+    GPSWeeks      = obs.GPSWeeks;
+    C1            = obs.C1;
+    C2            = obs.C2;
+    P1            = obs.P1;
+    P2            = obs.P2;
+    L1            = obs.L1();
+    L2            = obs.L2();
+    slip_cnt_L1   = obs.slip_cnt_L1;
+    slip_cnt_L2   = obs.slip_cnt_L2;
     lock_timei_L1 = -1;
     lock_timei_L2 = -1;
-    S1            = obs->S1();
-    S2            = obs->S2();
+    S1            = obs.S1();
+    S2            = obs.S2();
     SNR1          = 0;
     SNR2          = 0;
@@ -171,5 +171,5 @@
   }
 
-  _epochs = new QMultiMap<long, t_obs*>;
+  _epochs = new QMultiMap<long, t_obs>;
 
   _lastDumpSec   = 0; 
@@ -197,29 +197,21 @@
   delete _nmeaServer;
   delete _nmeaSockets;
-  if (_epochs) {
-    QListIterator<t_obs*> it(_epochs->values());
-    while (it.hasNext()) {
-      delete it.next();
-    }
-    delete _epochs;
-  }
+  delete _epochs;
 }
 
 // New Observations
 ////////////////////////////////////////////////////////////////////////////
-void bncCaster::newObs(const QByteArray staID, bool firstObs, t_obs* obs) {
+void bncCaster::newObs(const QByteArray staID, bool firstObs, t_obs obs) {
 
   QMutexLocker locker(&_mutex);
 
-  obs->_status = t_obs::received;
-
-  long iSec    = long(floor(obs->GPSWeeks+0.5));
-  long newTime = obs->GPSWeek * 7*24*3600 + iSec;
+  long iSec    = long(floor(obs.GPSWeeks+0.5));
+  long newTime = obs.GPSWeek * 7*24*3600 + iSec;
 
   // Rename the Station
   // ------------------
-  strncpy(obs->StatID, staID.constData(),sizeof(obs->StatID));
-  obs->StatID[sizeof(obs->StatID)-1] = '\0';
-        
+  strncpy(obs.StatID, staID.constData(),sizeof(obs.StatID));
+  obs.StatID[sizeof(obs.StatID)-1] = '\0';
+
   const char begObs[] = "BEGOBS";
   const int begObsNBytes = sizeof(begObs) - 1;
@@ -283,5 +275,4 @@
       }
     }
-    delete obs;
     return;
   }
@@ -323,10 +314,10 @@
 void bncCaster::addGetThread(bncGetThread* getThread, bool noNewThread) {
 
-  ////  qRegisterMetaType<t_obs*>("p_obs");
+  qRegisterMetaType<t_obs>("t_obs");
   qRegisterMetaType<gpsephemeris>("gpsephemeris");
   qRegisterMetaType<glonassephemeris>("glonassephemeris");
 
-  connect(getThread, SIGNAL(newObs(QByteArray, bool, t_obs*)),
-          this,      SLOT(newObs(QByteArray, bool, t_obs*))); /// Qt::DirectConnection);
+  connect(getThread, SIGNAL(newObs(QByteArray, bool, t_obs)),
+          this,      SLOT(newObs(QByteArray, bool, t_obs)));
 
   connect(getThread, SIGNAL(getThreadFinished(QByteArray)), 
@@ -385,14 +376,14 @@
 
     bool first = true;
-    QList<t_obs*> allObs = _epochs->values(sec);
-
-    QListIterator<t_obs*> it(allObs);
+    QList<t_obs> allObs = _epochs->values(sec);
+
+    QListIterator<t_obs> it(allObs);
     while (it.hasNext()) {
-      t_obs* obs = it.next();
+      const t_obs& obs = it.next();
 
       if (_samplingRate == 0 || sec % _samplingRate == 0) {
 
 	if (first) {
-	  QTime enomtime = QTime(0,0,0).addSecs(static_cast<int>(floor(obs->GPSWeeks+0.5)));
+	  QTime enomtime = QTime(0,0,0).addSecs(static_cast<int>(floor(obs.GPSWeeks+0.5)));
 //        emit( newMessage( QString("Epoch %1 dumped").arg(enomtime.toString("HH:mm:ss")).toAscii(), true) ); // weber
 	}
@@ -404,7 +395,7 @@
           }
 
-          *_out << obs->StatID << " " << obs->GPSWeek << " ";  
+          *_out << obs.StatID << " " << obs.GPSWeek << " ";  
           _out->setRealNumberPrecision(7); 
-           *_out << obs->GPSWeeks << " "; 
+           *_out << obs.GPSWeeks << " "; 
 
            *_out << bncRinex::rinexSatLine(obs, ' ', ' ', ' ').c_str() 
@@ -461,5 +452,4 @@
       }
 
-      delete obs;
       _epochs->remove(sec);
       first = false;
Index: trunk/BNC/bnccaster.h
===================================================================
--- trunk/BNC/bnccaster.h	(revision 2710)
+++ trunk/BNC/bnccaster.h	(revision 2711)
@@ -44,5 +44,5 @@
 
  public slots:
-   void newObs(QByteArray staID, bool firstObs, t_obs* obs);
+   void newObs(QByteArray staID, bool firstObs, t_obs obs);
    void slotReadMountPoints();
    void slotNewNMEAstr(QByteArray str);
@@ -66,5 +66,5 @@
    int                      _port;
    QTextStream*             _out;
-   QMultiMap<long, t_obs*>* _epochs;
+   QMultiMap<long, t_obs>*  _epochs;
    long                     _lastDumpSec;
    QTcpServer*              _server;
Index: trunk/BNC/bncgetthread.cpp
===================================================================
--- trunk/BNC/bncgetthread.cpp	(revision 2710)
+++ trunk/BNC/bncgetthread.cpp	(revision 2711)
@@ -374,8 +374,4 @@
       // Delete old observations
       // -----------------------
-      QListIterator<t_obs*> itOld(_decoder->_obsList);
-      while (itOld.hasNext()) {
-        delete itOld.next();
-      }
       _decoder->_obsList.clear();
 
@@ -439,8 +435,9 @@
       // Loop over all observations (observations output)
       // ------------------------------------------------
-      QListIterator<t_obs*> it(_decoder->_obsList);
+      QListIterator<t_obs> it(_decoder->_obsList);
+      bool firstObs = true;
       while (it.hasNext()) {
-        t_obs* obs = it.next();
-      
+        const t_obs& obs = it.next();
+
         // Check observation epoch
         // -----------------------
@@ -451,6 +448,6 @@
           const double secPerWeek = 7.0 * 24.0 * 3600.0;
           
-          double currSec = week         * secPerWeek + sec;
-          double obsSec  = obs->GPSWeek * secPerWeek + obs->GPSWeeks;
+          double currSec = week        * secPerWeek + sec;
+          double obsSec  = obs.GPSWeek * secPerWeek + obs.GPSWeeks;
 
           const double maxDt = 600.0;
@@ -458,5 +455,4 @@
           if (fabs(currSec - obsSec) > maxDt) {
               emit( newMessage(_staID + ": Wrong observation epoch(s)", false) );
-            delete obs;
             continue;
           }
@@ -466,6 +462,6 @@
         // ------------
         if (_rnx) {
-          long iSec    = long(floor(obs->GPSWeeks+0.5));
-          long newTime = obs->GPSWeek * 7*24*3600 + iSec;
+          long iSec    = long(floor(obs.GPSWeeks+0.5));
+          long newTime = obs.GPSWeek * 7*24*3600 + iSec;
           if (_samplingRate == 0 || iSec % _samplingRate == 0) {
             _rnx->deepCopy(obs);
@@ -484,9 +480,8 @@
         // Emit new observation signal
         // ---------------------------
-        bool firstObs = (obs == _decoder->_obsList.first());
-        obs->_status = t_obs::posted;
-         if (!_isToBeDeleted) {
-           emit newObs(_staID, firstObs, obs);
-         }
+        if (!_isToBeDeleted) {
+          emit newObs(_staID, firstObs, obs);
+        }
+        firstObs = false;
       }
       _decoder->_obsList.clear();
Index: trunk/BNC/bncgetthread.h
===================================================================
--- trunk/BNC/bncgetthread.h	(revision 2710)
+++ trunk/BNC/bncgetthread.h	(revision 2711)
@@ -79,5 +79,5 @@
    void newBytes(QByteArray staID, double nbyte);
    void newLatency(QByteArray staID, double clate);
-   void newObs(QByteArray staID, bool firstObs, t_obs* obs);
+   void newObs(QByteArray staID, bool firstObs, t_obs obs);
    void newAntCrd(QByteArray staID, double xx, double yy, double zz, QByteArray antType);
    void newMessage(QByteArray msg, bool showOnScreen);
Index: trunk/BNC/bncpppclient.cpp
===================================================================
--- trunk/BNC/bncpppclient.cpp	(revision 2710)
+++ trunk/BNC/bncpppclient.cpp	(revision 2711)
@@ -119,8 +119,8 @@
 //
 ////////////////////////////////////////////////////////////////////////////
-void bncPPPclient::putNewObs(t_obs* obs) {
+void bncPPPclient::putNewObs(const t_obs& obs) {
   QMutexLocker locker(&_mutex);
 
-  if (obs->satSys != 'G' && !_useGlonass) {
+  if (obs.satSys != 'G' && !_useGlonass) {
     return;
   }
@@ -130,10 +130,10 @@
   // Satellite Number
   // ----------------
-  if      (obs->satSys == 'G') {
-    QString prn = QString("G%1").arg(obs->satNum, 2, 10, QChar('0'));
+  if      (obs.satSys == 'G') {
+    QString prn = QString("G%1").arg(obs.satNum, 2, 10, QChar('0'));
     satData->prn = prn;
   }
-  else if (obs->satSys == 'R') {
-    QString prn = QString("R%1").arg(obs->satNum, 2, 10, QChar('0'));
+  else if (obs.satSys == 'R') {
+    QString prn = QString("R%1").arg(obs.satNum, 2, 10, QChar('0'));
     satData->prn = prn;
   }
@@ -142,6 +142,6 @@
   // -----------
   slipInfo& sInfo  = _slips[satData->prn];
-  if ( sInfo.slipCntL1 == obs->slip_cnt_L1  &&
-       sInfo.slipCntL2 == obs->slip_cnt_L2 ) {
+  if ( sInfo.slipCntL1 == obs.slip_cnt_L1  &&
+       sInfo.slipCntL2 == obs.slip_cnt_L2 ) {
     satData->slipFlag = false;
   }
@@ -149,6 +149,6 @@
     satData->slipFlag = true;
   }
-  sInfo.slipCntL1 = obs->slip_cnt_L1;
-  sInfo.slipCntL2 = obs->slip_cnt_L2;
+  sInfo.slipCntL1 = obs.slip_cnt_L1;
+  sInfo.slipCntL2 = obs.slip_cnt_L2;
 
   // Handle Code Biases
@@ -161,10 +161,10 @@
   // Set Code Observations
   // ---------------------  
-  if      (obs->P1) {
-    satData->P1         = obs->P1 + (bb ? bb->p1 : 0.0);
+  if      (obs.P1) {
+    satData->P1         = obs.P1 + (bb ? bb->p1 : 0.0);
     satData->codeTypeF1 = t_satData::P_CODE;
   }
-  else if (obs->C1) {
-    satData->P1         = obs->C1 + (bb ? bb->c1 : 0.0);
+  else if (obs.C1) {
+    satData->P1         = obs.C1 + (bb ? bb->c1 : 0.0);
     satData->codeTypeF1 = t_satData::C_CODE;
   }
@@ -174,10 +174,10 @@
   }
     
-  if      (obs->P2) {
-    satData->P2         = obs->P2 + (bb ? bb->p2 : 0.0);
+  if      (obs.P2) {
+    satData->P2         = obs.P2 + (bb ? bb->p2 : 0.0);
     satData->codeTypeF2 = t_satData::P_CODE;
   }
-  else if (obs->C2) {
-    satData->P2         = obs->C2;
+  else if (obs.C2) {
+    satData->P2         = obs.C2;
     satData->codeTypeF2 = t_satData::C_CODE;
   }
@@ -190,7 +190,7 @@
   double f2 = t_CST::freq2;
 
-  if (obs->satSys == 'R') {
-    f1 = 1602000000.0 + 562500.0 * obs->slotNum; 
-    f2 = 1246000000.0 + 437500.0 * obs->slotNum;
+  if (obs.satSys == 'R') {
+    f1 = 1602000000.0 + 562500.0 * obs.slotNum; 
+    f2 = 1246000000.0 + 437500.0 * obs.slotNum;
   }
 
@@ -204,7 +204,7 @@
   // Set Phase Observations
   // ----------------------  
-  if (obs->L1() && obs->L2()) {
-    satData->L1 = obs->L1() * t_CST::c / f1;
-    satData->L2 = obs->L2() * t_CST::c / f2;
+  if (obs.L1() && obs.L2()) {
+    satData->L1 = obs.L1() * t_CST::c / f1;
+    satData->L2 = obs.L2() * t_CST::c / f2;
   }
   else {
@@ -220,5 +220,5 @@
   // Add new Satellite to the epoch
   // ------------------------------
-  bncTime tt(obs->GPSWeek, obs->GPSWeeks);
+  bncTime tt(obs.GPSWeek, obs.GPSWeeks);
   
   if      (!_epoData) {
@@ -233,8 +233,8 @@
   }
 
-  if      (obs->satSys == 'G') {
+  if      (obs.satSys == 'G') {
     _epoData->satDataGPS[satData->prn] = satData;
   }
-  else if (obs->satSys == 'R') {
+  else if (obs.satSys == 'R') {
     _epoData->satDataGlo[satData->prn] = satData;
   }
Index: trunk/BNC/bncpppclient.h
===================================================================
--- trunk/BNC/bncpppclient.h	(revision 2710)
+++ trunk/BNC/bncpppclient.h	(revision 2711)
@@ -120,5 +120,5 @@
   bncPPPclient(QByteArray staID);
   ~bncPPPclient();
-  void putNewObs(t_obs* pp);
+  void putNewObs(const t_obs& pp);
 
  public slots:
Index: trunk/BNC/bncrinex.cpp
===================================================================
--- trunk/BNC/bncrinex.cpp	(revision 2710)
+++ trunk/BNC/bncrinex.cpp	(revision 2711)
@@ -107,8 +107,4 @@
 ////////////////////////////////////////////////////////////////////////////
 bncRinex::~bncRinex() {
-  QListIterator<t_obs*> it(_obs);
-  while (it.hasNext()) {
-    delete it.next();
-  }
   bncSettings settings;
   if ((_rinexVers == 3) && ( Qt::CheckState(settings.value("rnxAppend").toInt()) != Qt::Checked) ) {
@@ -518,8 +514,6 @@
 // Stores Observation into Internal Array
 ////////////////////////////////////////////////////////////////////////////
-void bncRinex::deepCopy(const t_obs* obs) {
-  t_obs* newObs = new t_obs();
-  memcpy(newObs, obs, sizeof(t_obs));
-  _obs.push_back(newObs);
+void bncRinex::deepCopy(t_obs obs) {
+  _obs.push_back(obs);
 }
 
@@ -530,9 +524,9 @@
   // Select observations older than maxTime
   // --------------------------------------
-  QList<t_obs*> dumpList;
-  QMutableListIterator<t_obs*> mIt(_obs);
+  QList<t_obs> dumpList;
+  QMutableListIterator<t_obs> mIt(_obs);
   while (mIt.hasNext()) {
-    t_obs* obs = mIt.next();
-    if (obs->GPSWeek * 7*24*3600 + obs->GPSWeeks < maxTime - 0.05) {
+    t_obs obs = mIt.next();
+    if (obs.GPSWeek * 7*24*3600 + obs.GPSWeeks < maxTime - 0.05) {
       dumpList.push_back(obs);
       mIt.remove();
@@ -548,8 +542,8 @@
   // Time of Epoch
   // -------------
-  t_obs* fObs = *dumpList.begin();
-  QDateTime datTim    = dateAndTimeFromGPSweek(fObs->GPSWeek, fObs->GPSWeeks);
-  QDateTime datTimNom = dateAndTimeFromGPSweek(fObs->GPSWeek, 
-                                               floor(fObs->GPSWeeks+0.5));
+  const t_obs& fObs   = dumpList.first();
+  QDateTime datTim    = dateAndTimeFromGPSweek(fObs.GPSWeek, fObs.GPSWeeks);
+  QDateTime datTimNom = dateAndTimeFromGPSweek(fObs.GPSWeek, 
+                                               floor(fObs.GPSWeeks+0.5));
 
   // Close the file
@@ -566,5 +560,5 @@
   }
 
-  double sec = double(datTim.time().second()) + fmod(fObs->GPSWeeks,1.0);
+  double sec = double(datTim.time().second()) + fmod(fObs.GPSWeeks,1.0);
 
   // Epoch header line: RINEX Version 3
@@ -582,9 +576,9 @@
          << "  " << 0 << setw(3)  << dumpList.size();
 
-    QListIterator<t_obs*> it(dumpList); int iSat = 0;
+    QListIterator<t_obs> it(dumpList); int iSat = 0;
     while (it.hasNext()) {
       iSat++;
-      t_obs* obs = it.next();
-      _out << obs->satSys << setw(2) << obs->satNum;
+      const t_obs& obs = it.next();
+      _out << obs.satSys << setw(2) << obs.satNum;
       if (iSat == 12 && it.hasNext()) {
         _out << endl << "                                ";
@@ -595,40 +589,40 @@
   }
 
-  QListIterator<t_obs*> it(dumpList);
+  QListIterator<t_obs> it(dumpList);
   while (it.hasNext()) {
-    t_obs* obs = it.next();
+    const t_obs& obs = it.next();
 
     // Cycle slips detection
     // ---------------------
-    QString prn = QString("%1%2").arg(obs->satSys)
-                            .arg(obs->satNum, 2, 10, QChar('0'));
+    QString prn = QString("%1%2").arg(obs.satSys)
+                            .arg(obs.satNum, 2, 10, QChar('0'));
 
     char lli1 = ' ';
     char lli2 = ' ';
     char lli5 = ' ';
-    if      ( obs->slip_cnt_L1 >= 0 ) {
+    if      ( obs.slip_cnt_L1 >= 0 ) {
       if ( _slip_cnt_L1.find(prn)         != _slip_cnt_L1.end() && 
-           _slip_cnt_L1.find(prn).value() != obs->slip_cnt_L1 ) {
+           _slip_cnt_L1.find(prn).value() != obs.slip_cnt_L1 ) {
         lli1 = '1';
       }
     }
 
-    if ( obs->slip_cnt_L2 >= 0 ) {
+    if ( obs.slip_cnt_L2 >= 0 ) {
       if ( _slip_cnt_L2.find(prn)         != _slip_cnt_L2.end() && 
-           _slip_cnt_L2.find(prn).value() != obs->slip_cnt_L2 ) {
+           _slip_cnt_L2.find(prn).value() != obs.slip_cnt_L2 ) {
         lli2 = '1';
       }
     }
 
-    if ( obs->slip_cnt_L5 >= 0 ) {
+    if ( obs.slip_cnt_L5 >= 0 ) {
       if ( _slip_cnt_L5.find(prn)         != _slip_cnt_L5.end() && 
-           _slip_cnt_L5.find(prn).value() != obs->slip_cnt_L5 ) {
+           _slip_cnt_L5.find(prn).value() != obs.slip_cnt_L5 ) {
         lli5 = '1';
       }
     }
 
-    _slip_cnt_L1[prn]   = obs->slip_cnt_L1;
-    _slip_cnt_L2[prn]   = obs->slip_cnt_L2;
-    _slip_cnt_L5[prn]   = obs->slip_cnt_L5;
+    _slip_cnt_L1[prn]   = obs.slip_cnt_L1;
+    _slip_cnt_L2[prn]   = obs.slip_cnt_L2;
+    _slip_cnt_L5[prn]   = obs.slip_cnt_L5;
 
     // RINEX Version 3
@@ -642,15 +636,13 @@
     // ---------------
     else {
-      _out << setw(14) << setprecision(3) << obs->C1 << ' '  << ' '
-           << setw(14) << setprecision(3) << obs->P1 << ' '  << ' '
-           << setw(14) << setprecision(3) << obs->L1()  << lli1 << ' '
-           << setw(14) << setprecision(3) << obs->S1()  << ' '  << ' '
-           << setw(14) << setprecision(3) << obs->C2 << ' '  << ' ' << endl
-           << setw(14) << setprecision(3) << obs->P2 << ' '  << ' ' 
-           << setw(14) << setprecision(3) << obs->L2()  << lli2 << ' '
-           << setw(16) << setprecision(3) << obs->S2()  << endl;
-    }
-
-    delete obs;
+      _out << setw(14) << setprecision(3) << obs.C1 << ' '  << ' '
+           << setw(14) << setprecision(3) << obs.P1 << ' '  << ' '
+           << setw(14) << setprecision(3) << obs.L1()  << lli1 << ' '
+           << setw(14) << setprecision(3) << obs.S1()  << ' '  << ' '
+           << setw(14) << setprecision(3) << obs.C2 << ' '  << ' ' << endl
+           << setw(14) << setprecision(3) << obs.P2 << ' '  << ' ' 
+           << setw(14) << setprecision(3) << obs.L2()  << lli2 << ' '
+           << setw(16) << setprecision(3) << obs.S2()  << endl;
+    }
   }
 
@@ -679,76 +671,76 @@
 // One Line in RINEX v3 (static)
 ////////////////////////////////////////////////////////////////////////////
-string bncRinex::rinexSatLine(const t_obs* obs, 
+string bncRinex::rinexSatLine(const t_obs& obs, 
                               char lli1, char lli2, char lli5) {
   ostringstream str;
   str.setf(ios::showpoint | ios::fixed);
 
-  if      (obs->satSys == 'G') { // GPS
-    str << obs->satSys 
-        << setw(2) << setfill('0') << obs->satNum << setfill(' ')
-        << setw(14) << setprecision(3) << obs->C1  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L1C << lli1 << ' '
-        << setw(14) << setprecision(3) << obs->D1C << ' '  << ' '
-        << setw(14) << setprecision(3) << obs->S1C << ' '  << ' ' 
-        << setw(14) << setprecision(3) << obs->P1  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L1P << lli1 << ' '
-        << setw(14) << setprecision(3) << obs->D1P << ' '  << ' '
-        << setw(14) << setprecision(3) << obs->S1P << ' '  << ' ' 
-        << setw(14) << setprecision(3) << obs->P2  << ' '  << ' ' 
-        << setw(14) << setprecision(3) << obs->L2P << lli2 << ' '
-        << setw(14) << setprecision(3) << obs->D2P << ' '  << ' '
-        << setw(14) << setprecision(3) << obs->S2P << ' '  << ' ' 
-        << setw(14) << setprecision(3) << obs->C2  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L2C << lli2 << ' ' 
-        << setw(14) << setprecision(3) << obs->D2C << ' '  << ' ' 
-        << setw(14) << setprecision(3) << obs->S2C << ' '  << ' '
-        << setw(14) << setprecision(3) << obs->C5  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L5  << lli5 << ' ' 
-        << setw(14) << setprecision(3) << obs->D5  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->S5;
-  }
-  else if (obs->satSys == 'R') { // Glonass
-    str << obs->satSys 
-        << setw(2) << setfill('0') << obs->satNum << setfill(' ')
-        << setw(14) << setprecision(3) << obs->C1  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L1C << lli1 << ' '
-        << setw(14) << setprecision(3) << obs->D1C << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->S1C << ' '  << ' ' 
-        << setw(14) << setprecision(3) << obs->P1  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L1P << lli1 << ' '
-        << setw(14) << setprecision(3) << obs->D1P << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->S1P << ' '  << ' ' 
-        << setw(14) << setprecision(3) << obs->P2  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L2P << lli2 << ' ' 
-        << setw(14) << setprecision(3) << obs->D2P << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->S2P << ' '  << ' '
-        << setw(14) << setprecision(3) << obs->C2  << ' '  << ' ' 
-        << setw(14) << setprecision(3) << obs->L2C << lli2 << ' ' 
-        << setw(14) << setprecision(3) << obs->D2C << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->S2C;
-  }
-  else if (obs->satSys == 'S') { // SBAS
-    str << obs->satSys 
-        << setw(2) << setfill('0') << obs->satNum << setfill(' ')
-        << setw(14) << setprecision(3) << obs->C1  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L1C << lli1 << ' '
-        << setw(14) << setprecision(3) << obs->D1C << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->S1C << ' '  << ' '
-        << setw(14) << setprecision(3) << obs->P1  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L1P << lli1 << ' '
-        << setw(14) << setprecision(3) << obs->D1P << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->S1P;
-  }
-  else if (obs->satSys == 'E') { // Galileo
-    str << obs->satSys 
-        << setw(2) << setfill('0') << obs->satNum << setfill(' ')
-        << setw(14) << setprecision(3) << obs->C1  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L1C << lli1 << ' '
-        << setw(14) << setprecision(3) << obs->D1C << ' '  << ' ' 
-        << setw(14) << setprecision(3) << obs->S1C << ' '  << ' ' 
-        << setw(14) << setprecision(3) << obs->C5  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->L5  << lli5 << ' '
-        << setw(14) << setprecision(3) << obs->D5  << ' '  << ' '  
-        << setw(14) << setprecision(3) << obs->S5;
+  if      (obs.satSys == 'G') { // GPS
+    str << obs.satSys 
+        << setw(2) << setfill('0') << obs.satNum << setfill(' ')
+        << setw(14) << setprecision(3) << obs.C1  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L1C << lli1 << ' '
+        << setw(14) << setprecision(3) << obs.D1C << ' '  << ' '
+        << setw(14) << setprecision(3) << obs.S1C << ' '  << ' ' 
+        << setw(14) << setprecision(3) << obs.P1  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L1P << lli1 << ' '
+        << setw(14) << setprecision(3) << obs.D1P << ' '  << ' '
+        << setw(14) << setprecision(3) << obs.S1P << ' '  << ' ' 
+        << setw(14) << setprecision(3) << obs.P2  << ' '  << ' ' 
+        << setw(14) << setprecision(3) << obs.L2P << lli2 << ' '
+        << setw(14) << setprecision(3) << obs.D2P << ' '  << ' '
+        << setw(14) << setprecision(3) << obs.S2P << ' '  << ' ' 
+        << setw(14) << setprecision(3) << obs.C2  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L2C << lli2 << ' ' 
+        << setw(14) << setprecision(3) << obs.D2C << ' '  << ' ' 
+        << setw(14) << setprecision(3) << obs.S2C << ' '  << ' '
+        << setw(14) << setprecision(3) << obs.C5  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L5  << lli5 << ' ' 
+        << setw(14) << setprecision(3) << obs.D5  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.S5;
+  }
+  else if (obs.satSys == 'R') { // Glonass
+    str << obs.satSys 
+        << setw(2) << setfill('0') << obs.satNum << setfill(' ')
+        << setw(14) << setprecision(3) << obs.C1  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L1C << lli1 << ' '
+        << setw(14) << setprecision(3) << obs.D1C << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.S1C << ' '  << ' ' 
+        << setw(14) << setprecision(3) << obs.P1  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L1P << lli1 << ' '
+        << setw(14) << setprecision(3) << obs.D1P << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.S1P << ' '  << ' ' 
+        << setw(14) << setprecision(3) << obs.P2  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L2P << lli2 << ' ' 
+        << setw(14) << setprecision(3) << obs.D2P << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.S2P << ' '  << ' '
+        << setw(14) << setprecision(3) << obs.C2  << ' '  << ' ' 
+        << setw(14) << setprecision(3) << obs.L2C << lli2 << ' ' 
+        << setw(14) << setprecision(3) << obs.D2C << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.S2C;
+  }
+  else if (obs.satSys == 'S') { // SBAS
+    str << obs.satSys 
+        << setw(2) << setfill('0') << obs.satNum << setfill(' ')
+        << setw(14) << setprecision(3) << obs.C1  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L1C << lli1 << ' '
+        << setw(14) << setprecision(3) << obs.D1C << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.S1C << ' '  << ' '
+        << setw(14) << setprecision(3) << obs.P1  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L1P << lli1 << ' '
+        << setw(14) << setprecision(3) << obs.D1P << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.S1P;
+  }
+  else if (obs.satSys == 'E') { // Galileo
+    str << obs.satSys 
+        << setw(2) << setfill('0') << obs.satNum << setfill(' ')
+        << setw(14) << setprecision(3) << obs.C1  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L1C << lli1 << ' '
+        << setw(14) << setprecision(3) << obs.D1C << ' '  << ' ' 
+        << setw(14) << setprecision(3) << obs.S1C << ' '  << ' ' 
+        << setw(14) << setprecision(3) << obs.C5  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.L5  << lli5 << ' '
+        << setw(14) << setprecision(3) << obs.D5  << ' '  << ' '  
+        << setw(14) << setprecision(3) << obs.S5;
   }
   return str.str();
Index: trunk/BNC/bncrinex.h
===================================================================
--- trunk/BNC/bncrinex.h	(revision 2710)
+++ trunk/BNC/bncrinex.h	(revision 2711)
@@ -42,5 +42,5 @@
             const QByteArray& ntripVersion); 
    ~bncRinex();
-   void deepCopy(const t_obs* obs);
+   void deepCopy(t_obs obs);
    void dumpEpoch(long maxTime);
    void setReconnectFlag(bool flag){_reconnectFlag = flag;}
@@ -55,5 +55,5 @@
    }
 
-   static std::string rinexSatLine(const t_obs* obs, 
+   static std::string rinexSatLine(const t_obs& obs, 
                                    char lli1, char lli2, char lli5);
 
@@ -67,5 +67,5 @@
    QByteArray    _statID;
    QByteArray    _fName;
-   QList<t_obs*> _obs;
+   QList<t_obs>  _obs;
    std::ofstream _out;
    QStringList   _headerLines;
Index: trunk/BNC/latencychecker.cpp
===================================================================
--- trunk/BNC/latencychecker.cpp	(revision 2710)
+++ trunk/BNC/latencychecker.cpp	(revision 2711)
@@ -307,13 +307,13 @@
 // Perform latency checks (observations)
 //////////////////////////////////////////////////////////////////////////////
-void latencyChecker::checkObsLatency(const QList<t_obs*>& obsList) {
+void latencyChecker::checkObsLatency(const QList<t_obs>& obsList) {
 
   if (_perfIntr > 0 ) {
 
-    QListIterator<t_obs*> it(obsList);
+    QListIterator<t_obs> it(obsList);
     while (it.hasNext()) {
-      t_obs* obs = it.next();
+      const t_obs& obs = it.next();
       
-      _newSecGPS = static_cast<int>(obs->GPSWeeks);
+      _newSecGPS = static_cast<int>(obs.GPSWeeks);
       if (_newSecGPS != _oldSecGPS) {
         if (_newSecGPS % _perfIntr < _oldSecGPS % _perfIntr) {
@@ -368,13 +368,13 @@
         currentGPSWeeks(week, sec);
         const double secPerWeek = 7.0 * 24.0 * 3600.0;
-        if (week < obs->GPSWeek) {
+        if (week < obs.GPSWeek) {
           week += 1;
           sec  -= secPerWeek;
         }
-        if (week > obs->GPSWeek) {
+        if (week > obs.GPSWeek) {
           week -= 1;
           sec  += secPerWeek;
         }
-         _curLat   = sec - obs->GPSWeeks;
+         _curLat   = sec - obs.GPSWeeks;
         _sumLat  += _curLat;
         _sumLatQ += _curLat * _curLat;
Index: trunk/BNC/latencychecker.h
===================================================================
--- trunk/BNC/latencychecker.h	(revision 2710)
+++ trunk/BNC/latencychecker.h	(revision 2711)
@@ -38,5 +38,5 @@
   void checkReconnect();
   void checkOutage(bool decoded);
-  void checkObsLatency(const QList<t_obs*>& obsList);
+  void checkObsLatency(const QList<t_obs>& obsList);
   void checkCorrLatency(int corrGPSEpochTime);
   double currentLatency() const {return _curLat;}
