Index: trunk/BNC/src/PPP/options.cpp
===================================================================
--- trunk/BNC/src/PPP/options.cpp	(revision 5735)
+++ trunk/BNC/src/PPP/options.cpp	(revision 5736)
@@ -50,2 +50,8 @@
 }
 
+// Destructor
+//////////////////////////////////////////////////////////////////////////////
+t_options::~t_options() {
+  cout << "~t_options" << endl;
+}
+
Index: trunk/BNC/src/PPP/options.h
===================================================================
--- trunk/BNC/src/PPP/options.h	(revision 5735)
+++ trunk/BNC/src/PPP/options.h	(revision 5736)
@@ -12,5 +12,5 @@
  public:
   t_options();
-  ~t_options() {};
+  ~t_options();
   bool         _realTime;
   std::string  _roverName;     
Index: trunk/BNC/src/PPP/pppMain.cpp
===================================================================
--- trunk/BNC/src/PPP/pppMain.cpp	(revision 5735)
+++ trunk/BNC/src/PPP/pppMain.cpp	(revision 5736)
@@ -68,8 +68,8 @@
   readOptions();
 
-  QListIterator<QSharedPointer<t_options> > it(_options);
-  while (it.hasNext()) {
-    QSharedPointer<t_options> opt = it.next();
-    t_pppThread* pppThread = new t_pppThread(opt.data());
+  QListIterator<t_options*> iOpt(_options);
+  while (iOpt.hasNext()) {
+    const t_options* opt = iOpt.next();
+    t_pppThread* pppThread = new t_pppThread(opt);
     pppThread->start();
     _pppThreads << pppThread;
@@ -93,4 +93,10 @@
   _pppThreads.clear();
 
+  QListIterator<t_options*> iOpt(_options);
+  while (iOpt.hasNext()) {
+    delete iOpt.next();
+  }
+  _options.clear();
+
   _running = false;
 }
@@ -100,4 +106,8 @@
 void t_pppMain::readOptions() {
 
+  QListIterator<t_options*> iOpt(_options);
+  while (iOpt.hasNext()) {
+    delete iOpt.next();
+  }
   _options.clear();
 
@@ -119,7 +129,7 @@
   }
 
-  QListIterator<QString> it(settings.value("PPP/staTable").toStringList());
-  while (it.hasNext()) {
-    QStringList hlp = it.next().split(",");
+  QListIterator<QString> iSta(settings.value("PPP/staTable").toStringList());
+  while (iSta.hasNext()) {
+    QStringList hlp = iSta.next().split(",");
 
     if (hlp.size() < 9) {
@@ -127,5 +137,5 @@
     }
 
-    QSharedPointer<t_options> opt(new t_options());
+    t_options* opt = new t_options();
 
     opt->_realTime    = realTime;
Index: trunk/BNC/src/PPP/pppMain.h
===================================================================
--- trunk/BNC/src/PPP/pppMain.h	(revision 5735)
+++ trunk/BNC/src/PPP/pppMain.h	(revision 5736)
@@ -18,10 +18,10 @@
   void readOptions();
 
-  QList<QSharedPointer<t_options> > _options;
-  QList<t_pppThread*>               _pppThreads;
-  QString                           _logFile;
-  QString                           _nmeaFile;
-  int                               _nmeaPort;
-  bool                              _running;
+  QList<t_options*>   _options;
+  QList<t_pppThread*> _pppThreads;
+  QString             _logFile;
+  QString             _nmeaFile;
+  int                 _nmeaPort;
+  bool                _running;
 };
 
Index: trunk/BNC/src/PPP/pppThread.cpp
===================================================================
--- trunk/BNC/src/PPP/pppThread.cpp	(revision 5735)
+++ trunk/BNC/src/PPP/pppThread.cpp	(revision 5736)
@@ -54,5 +54,5 @@
 ////////////////////////////////////////////////////////////////////////////
 t_pppThread::t_pppThread(const t_options* opt) : QThread(0) {
-  _opt = *opt;
+  _opt = opt;
 }
 
@@ -68,15 +68,15 @@
 void t_pppThread::run() {
 
-  cout << _opt._roverName << " run" << endl;
+  cout << _opt->_roverName << " run" << endl;
 
   _pppRun = new t_pppRun(_opt);
   QThread::exec();
 
-  cout << _opt._roverName << " exit" << endl;
+  cout << _opt->_roverName << " exit" << endl;
 }
 
 // Constructor
 ////////////////////////////////////////////////////////////////////////////
-t_pppRun::t_pppRun(const t_options& opt) {
+t_pppRun::t_pppRun(const t_options* opt) {
   _opt = opt;
 
@@ -109,5 +109,5 @@
 void t_pppRun::slotNewEphGPS(gpsephemeris gpseph) {
   QMutexLocker locker(&_mutex);
-  cout << _opt._roverName << " slotNewEphGPS" << endl;
+  cout << _opt->_roverName << " slotNewEphGPS" << endl;
 }
 
@@ -116,5 +116,5 @@
 void t_pppRun::slotNewEphGlonass(glonassephemeris gloeph) {
   QMutexLocker locker(&_mutex);
-  cout << _opt._roverName << " slotNewEphGlonass" << endl;
+  cout << _opt->_roverName << " slotNewEphGlonass" << endl;
 }
   
@@ -123,5 +123,5 @@
 void t_pppRun::slotNewEphGalileo(galileoephemeris /* galeph */) {
   QMutexLocker locker(&_mutex);
-  cout << _opt._roverName << " slotNewEphGalileo" << endl;
+  cout << _opt->_roverName << " slotNewEphGalileo" << endl;
 }
 
@@ -130,5 +130,5 @@
 void t_pppRun::slotNewCorrections(QStringList corrList) {
   QMutexLocker locker(&_mutex);
-  cout << _opt._roverName << " slotNewCorrections" << endl;
+  cout << _opt->_roverName << " slotNewCorrections" << endl;
 }
 //
@@ -136,5 +136,5 @@
 void t_pppRun::slotNewObs(QByteArray staID, QList<t_obs> obsList) {
   QMutexLocker locker(&_mutex);
-  cout << _opt._roverName << " slotNewObs" << endl;
+  cout << _opt->_roverName << " slotNewObs" << endl;
 }
     
Index: trunk/BNC/src/PPP/pppThread.h
===================================================================
--- trunk/BNC/src/PPP/pppThread.h	(revision 5735)
+++ trunk/BNC/src/PPP/pppThread.h	(revision 5736)
@@ -13,5 +13,5 @@
  Q_OBJECT
  public:
-  t_pppRun(const t_options& opt);
+  t_pppRun(const t_options* opt);
   ~t_pppRun();
 
@@ -24,6 +24,6 @@
 
  private:
-  QMutex    _mutex;
-  t_options _opt;
+  QMutex           _mutex;
+  const t_options* _opt;
 };
 
@@ -35,6 +35,6 @@
 
  private:
-  t_options _opt;
-  t_pppRun* _pppRun;
+  const t_options* _opt;
+  t_pppRun*        _pppRun;
 };
 
