Fixed some bugs courtesy of Flavien Lebarbe
diff --git a/ChangeLog b/ChangeLog
index 40d82aa..ee77205 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-05-30  Flavien Lebarbe <flavien+libmtp@lebarbe.net>
+
+	* src/libmtp.c: fixed a bug in update metadata due to
+	  bad use of return code.
+	* src/libusb-glue.c: fixed a loop exiting problem with
+	  good 'ol GOTO.
+	
 2006-05-29  Linus Walleij <triad@df.lth.se>
 
 	* src/libusb-glue.c: one more device.
diff --git a/src/libmtp.c b/src/libmtp.c
index 117ddb1..d735ada 100644
--- a/src/libmtp.c
+++ b/src/libmtp.c
@@ -1959,28 +1959,28 @@
 
   // Update title
   ret = LIBMTP_Set_Object_String(device, metadata->item_id, PTP_OPC_Name, metadata->title,1);
-  if (ret != PTP_RC_OK) {
+  if (ret != 0) {
     printf("LIBMTP_Update_Track_Metadata(): could not set track title\n");
     return -1;
   }
 
   // Update album
   ret = LIBMTP_Set_Object_String(device, metadata->item_id, PTP_OPC_AlbumName, metadata->album,1);
-  if (ret != PTP_RC_OK) {
+  if (ret != 0) {
     printf("LIBMTP_Update_Track_Metadata(): could not set track album name\n");
     return -1;
   }
 
   // Update artist
   ret = LIBMTP_Set_Object_String(device, metadata->item_id, PTP_OPC_Artist, metadata->artist,1);
-  if (ret != PTP_RC_OK) {
+  if (ret != 0) {
     printf("LIBMTP_Update_Track_Metadata(): could not set track artist name\n");
     return -1;
   }
 
   // Update genre
   ret = LIBMTP_Set_Object_String(device, metadata->item_id, PTP_OPC_Artist, metadata->genre,1);
-  if (ret != PTP_RC_OK) {
+  if (ret != 0) {
     printf("LIBMTP_Update_Track_Metadata(): could not set track genre name\n");
     return -1;
   }
@@ -1988,7 +1988,7 @@
   // Update duration
   if (metadata->duration != 0) {
     ret = LIBMTP_Set_Object_U32(device, metadata->item_id, PTP_OPC_Duration, metadata->duration);
-    if (ret != PTP_RC_OK) {
+    if (ret != 0) {
       printf("LIBMTP_Update_Track_Metadata(): could not set track duration\n");
       return -1;
     }
@@ -1997,7 +1997,7 @@
   // Update track number.
   if (metadata->tracknumber != 0) {
     ret = LIBMTP_Set_Object_U16(device, metadata->item_id, PTP_OPC_Track, metadata->tracknumber);
-    if (ret != PTP_RC_OK) {
+    if (ret != 0) {
       printf("LIBMTP_Update_Track_Metadata(): could not set track tracknumber\n");
       return -1;
     }
@@ -2005,7 +2005,7 @@
 
   // Update creation datetime
   ret = LIBMTP_Set_Object_String(device, metadata->item_id, PTP_OPC_OriginalReleaseDate, metadata->date,0);
-  if (ret != PTP_RC_OK) {
+  if (ret != 0) {
     printf("LIBMTP_Update_Track_Metadata(): could not set track release date\n");
     return -1;
   }
diff --git a/src/libusb-glue.c b/src/libusb-glue.c
index c451888..3c57e89 100644
--- a/src/libusb-glue.c
+++ b/src/libusb-glue.c
@@ -516,6 +516,7 @@
 	      dev->descriptor.idProduct == mtp_device->product_id ) {
 	    
 	    printf("Found non-autodetected device \"%s\" on USB bus...\n", mtp_device->name);
+            goto next_step;
 	    
 	  }
 	}
@@ -523,6 +524,7 @@
     }
   }
 
+next_step:
   // Still not found any?
   if (dev == NULL) {
     return PTP_CD_RC_NO_DEVICES;