[PATCH 5/5] iphlpapi: Rewrite ConvertInterfaceLuidToNameA/NameToLuidA() to call their unicode equivalents.

Huw Davies huw at codeweavers.com
Fri Jul 2 03:41:36 CDT 2021


Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 dlls/iphlpapi/iphlpapi_main.c | 38 ++++++++++++++---------------------
 1 file changed, 15 insertions(+), 23 deletions(-)

diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index 8540b594e53..b6b96165027 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -3244,21 +3244,20 @@ DWORD WINAPI ConvertInterfaceLuidToIndex(const NET_LUID *luid, NET_IFINDEX *inde
  */
 DWORD WINAPI ConvertInterfaceLuidToNameA(const NET_LUID *luid, char *name, SIZE_T len)
 {
-    DWORD ret;
-    MIB_IFROW row;
+    DWORD err;
+    WCHAR nameW[IF_MAX_STRING_SIZE + 1];
 
-    TRACE("(%p %p %u)\n", luid, name, (DWORD)len);
+    TRACE( "(%p %p %u)\n", luid, name, (DWORD)len );
 
     if (!luid) return ERROR_INVALID_PARAMETER;
+    if (!name || !len) return ERROR_NOT_ENOUGH_MEMORY;
 
-    row.dwIndex = luid->Info.NetLuidIndex;
-    if ((ret = GetIfEntry( &row ))) return ret;
-
-    if (!name || len < WideCharToMultiByte( CP_UNIXCP, 0, row.wszName, -1, NULL, 0, NULL, NULL ))
-        return ERROR_NOT_ENOUGH_MEMORY;
+    err = ConvertInterfaceLuidToNameW( luid, nameW, ARRAY_SIZE(nameW) );
+    if (err) return err;
 
-    WideCharToMultiByte( CP_UNIXCP, 0, row.wszName, -1, name, len, NULL, NULL );
-    return NO_ERROR;
+    if (!WideCharToMultiByte( CP_UNIXCP, 0, nameW, -1, name, len, NULL, NULL ))
+        err = GetLastError();
+    return err;
 }
 
 /******************************************************************
@@ -3286,22 +3285,15 @@ DWORD WINAPI ConvertInterfaceLuidToNameW(const NET_LUID *luid, WCHAR *name, SIZE
  */
 DWORD WINAPI ConvertInterfaceNameToLuidA(const char *name, NET_LUID *luid)
 {
-    DWORD ret;
-    IF_INDEX index;
-    MIB_IFROW row;
-
-    TRACE("(%s %p)\n", debugstr_a(name), luid);
+    WCHAR nameW[IF_MAX_STRING_SIZE];
 
-    if ((ret = getInterfaceIndexByName( name, &index ))) return ERROR_INVALID_NAME;
-    if (!luid) return ERROR_INVALID_PARAMETER;
+    TRACE( "(%s %p)\n", debugstr_a(name), luid );
 
-    row.dwIndex = index;
-    if ((ret = GetIfEntry( &row ))) return ret;
+    if (!name) return ERROR_INVALID_NAME;
+    if (!MultiByteToWideChar( CP_UNIXCP, 0, name, -1, nameW, ARRAY_SIZE(nameW) ))
+        return GetLastError();
 
-    luid->Info.Reserved     = 0;
-    luid->Info.NetLuidIndex = index;
-    luid->Info.IfType       = row.dwType;
-    return NO_ERROR;
+    return ConvertInterfaceNameToLuidW( nameW, luid );
 }
 
 /******************************************************************
-- 
2.23.0




More information about the wine-devel mailing list