Index: trunk/BNC/bncgetthread.cpp
===================================================================
--- trunk/BNC/bncgetthread.cpp	(revision 3557)
+++ trunk/BNC/bncgetthread.cpp	(revision 3558)
@@ -285,6 +285,7 @@
            _format.indexOf("RTCM 3") != -1 ) {
     emit(newMessage(_staID + ": Get data in RTCM 3.x format", true));
-    _decoders[_staID] = new RTCM3Decoder(_staID, _rawFile);
-    connect((RTCM3Decoder*) decoder(), SIGNAL(newMessage(QByteArray,bool)), 
+    RTCM3Decoder* newDecoder = new RTCM3Decoder(_staID, _rawFile);
+    _decoders[_staID] = newDecoder;
+    connect((RTCM3Decoder*) newDecoder, SIGNAL(newMessage(QByteArray,bool)), 
             this, SIGNAL(newMessage(QByteArray,bool)));
   }
@@ -313,8 +314,12 @@
   msleep(100); //sleep 0.1 sec
   
-  if (decoder()) {
-    decoder()->initRinex(_staID, _mountPoint, _latitude, _longitude, 
-                         _nmea, _ntripVersion);
-
+  if (_decoders.contains(_staID)) {
+    _decoders[_staID]->initRinex(_staID, _mountPoint, _latitude, _longitude, 
+                                 _nmea, _ntripVersion);
+  }
+  else {
+    emit(newMessage(_staID + ": no decoder initialized " + _format, true));
+    _isToBeDeleted = true;
+    return failure;
   }
 
@@ -342,5 +347,5 @@
 GPSDecoder* bncGetThread::decoder() {
   if (_decoders.contains(_staID) || initDecoder() == success) {
-    return _decoders.value(_staID);
+    return _decoders[_staID];
   }
   else {
@@ -642,4 +647,8 @@
 void bncGetThread::scanRTCM() {
 
+  if (!decoder()) {
+    return;
+  }
+
   bncSettings settings;
   if ( Qt::CheckState(settings.value("scanRTCM").toInt()) == Qt::Checked ) {
@@ -746,4 +755,9 @@
 //////////////////////////////////////////////////////////////////////////////
 void bncGetThread::slotNewEphGPS(gpsephemeris gpseph) {
+
+  if (!decoder()) {
+    return;
+  }
+
   RTCM2Decoder* decoder2 = dynamic_cast<RTCM2Decoder*>(decoder());
   RTCM3Decoder* decoder3 = dynamic_cast<RTCM3Decoder*>(decoder());
