Index: trunk/BNC/src/PPP_SSR_I/pppClient.cpp
===================================================================
--- trunk/BNC/src/PPP_SSR_I/pppClient.cpp	(revision 7608)
+++ trunk/BNC/src/PPP_SSR_I/pppClient.cpp	(revision 7609)
@@ -60,4 +60,5 @@
   _ephUser  = new bncEphUser(false);
   _pppUtils = new t_pppUtils();
+  _newEph = 0;
 }
 
@@ -71,4 +72,6 @@
   delete _log;
   delete _pppUtils;
+  if (_newEph)
+    delete _newEph;
 }
 
@@ -292,4 +295,7 @@
     }
   }
+  else {
+    delete satData;
+  }
 }
 
@@ -348,4 +354,7 @@
 void t_pppClient::putEphemeris(const t_eph* eph) {
   bool check = _opt->_realTime;
+  if (_newEph)
+    delete _newEph;
+  _newEph = 0;
   const t_ephGPS* ephGPS = dynamic_cast<const t_ephGPS*>(eph);
   const t_ephGlo* ephGlo = dynamic_cast<const t_ephGlo*>(eph);
@@ -353,15 +362,19 @@
   const t_ephBDS* ephBDS = dynamic_cast<const t_ephBDS*>(eph);
   if      (ephGPS) {
-    _ephUser->putNewEph(new t_ephGPS(*ephGPS), check);
+    _newEph = new t_ephGPS(*ephGPS);
   }
   else if (ephGlo) {
-    _ephUser->putNewEph(new t_ephGlo(*ephGlo), check);
+    _newEph = new t_ephGlo(*ephGlo);
   }
   else if (ephGal) {
-    _ephUser->putNewEph(new t_ephGal(*ephGal), check);
+    _newEph = new t_ephGal(*ephGal);
   }
   else if (ephBDS) {
-      _ephUser->putNewEph(new t_ephBDS(*ephBDS), check);
-    }
+    _newEph = new t_ephBDS(*ephBDS);
+  }
+
+  if (_newEph) {
+    _ephUser->putNewEph(_newEph, check);
+  }
 }
 
Index: trunk/BNC/src/PPP_SSR_I/pppClient.h
===================================================================
--- trunk/BNC/src/PPP_SSR_I/pppClient.h	(revision 7608)
+++ trunk/BNC/src/PPP_SSR_I/pppClient.h	(revision 7609)
@@ -63,4 +63,5 @@
   t_pppUtils*         _pppUtils;
   std::ostringstream* _log;
+  t_eph*              _newEph;
 };
 
