Fix logic problem in get track listing functions
diff --git a/src/libmtp.c b/src/libmtp.c
index b379ce4..e05f742 100644
--- a/src/libmtp.c
+++ b/src/libmtp.c
@@ -872,6 +872,7 @@
 
   /* Allocate dynamic space for our device */
   mtp_device = (LIBMTP_mtpdevice_t *) malloc(sizeof(LIBMTP_mtpdevice_t));
+  memset(mtp_device, 0, sizeof(LIBMTP_mtpdevice_t));
   /* Check if there was a memory allocation error */
   if(mtp_device == NULL) {
     /* There has been an memory allocation error. We are going to ignore this
@@ -3585,10 +3586,10 @@
     // TODO: get this list as an intersection of the sets
     // supported by the device and the from the device and
     // all known audio track files?
-    if (!LIBMTP_FILETYPE_IS_TRACK(mtptype) &&
+    if (!LIBMTP_FILETYPE_IS_AUDIO(mtptype) &&
 	// This row lets through undefined files for examination since they may be forgotten OGG files.
-	(oi->ObjectFormat != PTP_OFC_Undefined && 
-	 (!FLAG_IRIVER_OGG_ALZHEIMER(ptp_usb) ||
+	(oi->ObjectFormat != PTP_OFC_Undefined || 
+	 (!FLAG_IRIVER_OGG_ALZHEIMER(ptp_usb) &&
 	 !FLAG_OGG_IS_UNKNOWN(ptp_usb)))
 	) {
       //printf("Not a music track (name: %s format: %d), skipping...\n", oi->Filename, oi->ObjectFormat);
@@ -3694,10 +3695,10 @@
     mtptype = map_ptp_type_to_libmtp_type(oi->ObjectFormat);
 
     // Ignore stuff we don't know how to handle...
-    if (!LIBMTP_FILETYPE_IS_TRACK(mtptype) &&
+    if (!LIBMTP_FILETYPE_IS_AUDIO(mtptype) &&
 	// This row lets through undefined files for examination since they may be forgotten OGG files.
-	(oi->ObjectFormat != PTP_OFC_Undefined && 
-	 (!FLAG_IRIVER_OGG_ALZHEIMER(ptp_usb) ||
+	(oi->ObjectFormat != PTP_OFC_Undefined || 
+	 (!FLAG_IRIVER_OGG_ALZHEIMER(ptp_usb) &&
 	 !FLAG_OGG_IS_UNKNOWN(ptp_usb)))
 	) {
       //printf("Not a music track (name: %s format: %d), skipping...\n", oi->Filename, oi->ObjectFormat);
diff --git a/src/music-players.h b/src/music-players.h
index f87689a..4c72cfe 100644
--- a/src/music-players.h
+++ b/src/music-players.h
@@ -66,7 +66,7 @@
   { "Creative", 0x041e, "ZEN Vision W", 0x4153, DEVICE_FLAG_NONE },
   // Don't add 0x4155: this is a Zen Stone device which is not MTP
   // Reported by Paul Kurczaba <paul@kurczaba.com>
-  { "Creative", 0x041e, "ZEN", 0x4157, DEVICE_FLAG_IGNORE_HEADER_ERRORS | DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS },
+  { "Creative", 0x041e, "ZEN", 0x4157, DEVICE_FLAG_IGNORE_HEADER_ERRORS | DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
   // Reported by Ringofan <mcroman@users.sourceforge.net>
   { "Creative", 0x041e, "ZEN V 2GB", 0x4158, DEVICE_FLAG_NONE },
   // Reported by j norment <stormzen@gmail.com>
@@ -104,9 +104,7 @@
   // From XNJB user
   // Guessing on .spl flag
   { "Samsung", 0x04e8, "YP-Z5", 0x503c, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_PLAYLIST_SPL_V1 },
-  // From XNJB user
-  // Guessing on .spl flag
-  { "Samsung", 0x04e8, "YP-Z5 2GB", 0x5041, DEVICE_FLAG_NONE | DEVICE_FLAG_PLAYLIST_SPL_V1 },
+  // Don't add 0x5041 as this is YP-Z5 in USB mode
   // Contributed by anonymous person on SourceForge
   { "Samsung", 0x04e8, "YP-T7J", 0x5047, DEVICE_FLAG_NONE },
   // Reported by cstrickler@gmail.com