Index: siparser.cpp
===================================================================
--- siparser.cpp	(revision 7761)
+++ siparser.cpp	(working copy)
@@ -1443,13 +1443,15 @@
         pos += 12;
         des_pos = pos;
 
+        
+        bestDescriptorsEE.clear();
+        bestDescriptorSE         = NULL;
         // Pick out EIT descriptors for later parsing, and parse others.
         while ((des_pos < (pos + descriptors_length)) && (des_pos <= size)) 
         { 
             des_pos += ProcessDVBEventDescriptors(
                 &buffer[des_pos], bestDescriptorSE, bestDescriptorsEE, event);
         }
-
         // Parse extended event descriptions for the most preferred language
         for (uint i = 0; i < bestDescriptorsEE.size(); ++i)
         {
@@ -1952,17 +1954,15 @@
  */
 uint SIParser::ProcessDVBEventDescriptors(
     const unsigned char          *data,
-    const unsigned char*         &bestDescriptorSE, 
+    const unsigned char*               &bestDescriptorSE, 
     vector<const unsigned char*> &bestDescriptorsEE,
     Event                        &event)
 {
     QString bestLanguageSE   = "";
     uint    bestPrioritySE   = UINT_MAX;
-    bestDescriptorSE         = NULL;
 
     QString bestLanguageEE   = "";
     uint    bestPriorityEE   = UINT_MAX;
-    bestDescriptorsEE.clear();
 
     uint    descriptorTag    = data[0];
     uint    descriptorLength = data[1];
@@ -1975,7 +1975,6 @@
 
             uint    priority = GetLanguagePriority(language);
             bestPrioritySE   = min(bestPrioritySE, priority);
-
             if (priority == bestPrioritySE)
             {
                 // add the descriptor, and update the language
