--- ntop-current/hash.c.save2	Mon Apr 29 10:57:25 2002
+++ ntop-current/hash.c	Mon Apr 29 11:04:47 2002
@@ -631,4 +631,5 @@
 	  if(!hostFound) {
 	    int sz;
+            void *reallocReturn;
 
 	    list->idx = myGlobals.device[actualDeviceId].actualHashSize;
@@ -637,11 +638,19 @@
 	    else
 	      myGlobals.device[actualDeviceId].actualHashSize *= 2; /* Double */
+            traceEvent(TRACE_INFO, "Extending hash size [deviceId=%d][oldSize=%d][newSize=%d]\n",
+                                   actualDeviceId,
+                                   list->idx,
+                                   myGlobals.device[actualDeviceId].actualHashSize);
 	    sz = myGlobals.device[actualDeviceId].actualHashSize*sizeof(struct hostTraffic*);
-	    myGlobals.device[actualDeviceId].hash_hostTraffic = (struct hostTraffic**)realloc(myGlobals.device[actualDeviceId].hash_hostTraffic, sz);
-	    memset(&myGlobals.device[actualDeviceId].hash_hostTraffic[list->idx],
-		   0, sizeof(struct hostTraffic*)*(myGlobals.device[actualDeviceId].actualHashSize-list->idx));
-	    traceEvent(TRACE_INFO, "Extending hash size [newSize=%d][deviceId=%d]",
-		       myGlobals.device[actualDeviceId].actualHashSize,
-		       actualDeviceId);
+	    reallocReturn = myGlobals.device[actualDeviceId].hash_hostTraffic = (struct hostTraffic**)realloc(myGlobals.device[actualDeviceId].hash_hostTraffic, sz);
+            if (reallocReturn == NULL) {
+                traceEvent(TRACE_ERROR, "ERROR while extending hash size[deviceId=%d][newSize=%d]\n",
+                                        actualDeviceId,
+                                        myGlobals.device[actualDeviceId].actualHashSize);
+/* TODO: Do we need to ABORT here, or can we soft fail ? */
+            } else {
+	        memset(&myGlobals.device[actualDeviceId].hash_hostTraffic[list->idx],
+		       0, sizeof(struct hostTraffic*)*(myGlobals.device[actualDeviceId].actualHashSize-list->idx));
+            }
 	  } else
 	    list->idx = hostFound;
