From 20b82357aa8a69a2295aee0b1d547b704824d32e Mon Sep 17 00:00:00 2001
From: Romain Vimont <rom1v@videolabs.io>
Date: Mon, 22 Nov 2021 15:41:32 +0100
Subject: [PATCH] mtp: fix device name

LIBMTP_Get_Friendlyname() may return an empty string. Since it is not
NULL, this name was used as the device name.

Instead, in that case, fallback to the model name.
---
 modules/services_discovery/mtp.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/modules/services_discovery/mtp.c b/modules/services_discovery/mtp.c
index 31e54f5049a6..90d2bdfd8821 100644
--- a/modules/services_discovery/mtp.c
+++ b/modules/services_discovery/mtp.c
@@ -174,6 +174,19 @@ static void *Run( void *data )
     return NULL;
 }
 
+static char *GetDeviceName( LIBMTP_mtpdevice_t *p_device )
+{
+    char *name = LIBMTP_Get_Friendlyname( p_device );
+    if ( !EMPTY_STR( name ) )
+        return name;
+
+    name = LIBMTP_Get_Modelname( p_device );
+    if ( !EMPTY_STR( name ) )
+        return name;
+
+    return strdup( "MTP Device" );
+}
+
 /*****************************************************************************
  * Everything else
  *****************************************************************************/
@@ -187,10 +200,9 @@ static int AddDevice( services_discovery_t *p_sd,
 
     if( ( p_device = LIBMTP_Open_Raw_Device( p_raw_device ) ) != NULL )
     {
-        if( !( psz_name = LIBMTP_Get_Friendlyname( p_device ) ) )
-            if( !( psz_name = LIBMTP_Get_Modelname( p_device ) ) )
-                if( !( psz_name = strdup( N_( "MTP Device" ) ) ) )
-                    return VLC_ENOMEM;
+        psz_name = GetDeviceName( p_device );
+        if ( !psz_name )
+            return VLC_ENOMEM;
         msg_Info( p_sd, "Found device: %s", psz_name );
         p_sys->i_bus = p_raw_device->bus_location;
         p_sys->i_dev = p_raw_device->devnum;
-- 
GitLab