Index: mythplugins/mythmusic/mythmusic/metadata.cpp
===================================================================
--- mythplugins/mythmusic/mythmusic/metadata.cpp	(revision 11823)
+++ mythplugins/mythmusic/mythmusic/metadata.cpp	(working copy)
@@ -1252,7 +1252,6 @@
     }
 }
 
-
 void MusicNode::printYourself(int indent_level)
 {
 
@@ -1291,6 +1290,20 @@
     return ((Metadata*)item1)->compare((Metadata*)item2);
 }
 
+void MetadataPtrList::sort()
+{
+    // Ensure everything has a track number, fixes ticket#2592. Best
+    // effort purely, may assign an already used track number to
+    // another track. Warranty void when read.
+    int pos = 1;
+    for (QPtrListIterator<Metadata> it (*this); *it; ++it && ++pos) 
+    {
+        if ((*it)->Track() == 0)
+            (*it)->setTrack(pos);
+    }
+    return QPtrList<Metadata>::sort();
+}
+
 int MusicNodePtrList::compareItems (QPtrCollection::Item item1, 
                                     QPtrCollection::Item item2)
 {
Index: mythplugins/mythmusic/mythmusic/metadata.h
===================================================================
--- mythplugins/mythmusic/mythmusic/metadata.h	(revision 11823)
+++ mythplugins/mythmusic/mythmusic/metadata.h	(working copy)
@@ -191,6 +191,7 @@
   public:
     MetadataPtrList() {}
     ~MetadataPtrList() {}
+    void sort();	
 
   protected:
     int compareItems(QPtrCollection::Item item1,
