Handle some failure cases in better way.
Modified: trunk/reactos/lib/iphlpapi/ifenum_reactos.c

Modified: trunk/reactos/lib/iphlpapi/ifenum_reactos.c
--- trunk/reactos/lib/iphlpapi/ifenum_reactos.c	2005-09-22 20:24:50 UTC (rev 17985)
+++ trunk/reactos/lib/iphlpapi/ifenum_reactos.c	2005-09-22 20:36:07 UTC (rev 17986)
@@ -304,13 +304,14 @@
 
 static BOOL isLoopback( HANDLE tcpFile, TDIEntityID *loop_maybe ) {
     IFEntrySafelySized entryInfo;
+    NTSTATUS status;
 
-    tdiGetMibForIfEntity( tcpFile, 
-                          loop_maybe,
-                          &entryInfo );
+    status = tdiGetMibForIfEntity( tcpFile, 
+                                   loop_maybe,
+                                   &entryInfo );
 
-    return !entryInfo.ent.if_type || 
-        entryInfo.ent.if_type == IFENT_SOFTWARE_LOOPBACK;
+    return NT_SUCCESS(status) && (!entryInfo.ent.if_type || 
+        entryInfo.ent.if_type == IFENT_SOFTWARE_LOOPBACK);
 }
 
 NTSTATUS tdiGetEntityType( HANDLE tcpFile, TDIEntityID *ent, PULONG type ) {
@@ -388,12 +389,18 @@
                 }
             }
         }
-    }
 
-    *infoSet = infoSetInt;
-    *numInterfaces = curInterf;
+        if (NT_SUCCESS(status)) {
+            *infoSet = infoSetInt;
+            *numInterfaces = curInterf;
+        } else {
+            HeapFree(GetProcessHeap(), 0, infoSetInt);
+        }
 
-    return STATUS_SUCCESS;
+        return status;
+    } else {
+        return STATUS_INSUFFICIENT_RESOURCES;
+    }
 }
 
 static DWORD getNumInterfacesInt(BOOL onlyNonLoopback)