diff --git a/epan/addr_resolv.c b/epan/addr_resolv.c index 8ccb415aa6..e495f7d2fb 100644 --- a/epan/addr_resolv.c +++ b/epan/addr_resolv.c @@ -142,9 +142,9 @@ typedef struct hashipv4 { guint addr; - gchar name[MAXNAMELEN]; gboolean is_dummy_entry; /* name is IPv4 address in dot format */ struct hashipv4 *next; + gchar name[MAXNAMELEN]; } hashipv4_t; /* hash table used for IPv6 lookup */ @@ -1063,6 +1063,7 @@ static hashether_t *add_eth_name(const guint8 *addr, const gchar *name) { int hash_idx; hashether_t *tp; + int new_one = TRUE; hash_idx = HASH_ETH_ADDRESS(addr); @@ -1078,6 +1079,7 @@ static hashether_t *add_eth_name(const guint8 *addr, const gchar *name) return tp; } else { /* replace this dummy (manuf) entry with a real name */ + new_one = FALSE; break; } } @@ -1090,10 +1092,12 @@ static hashether_t *add_eth_name(const guint8 *addr, const gchar *name) } } - memcpy(tp->addr, addr, sizeof(tp->addr)); strncpy(tp->name, name, MAXNAMELEN); tp->name[MAXNAMELEN-1] = '\0'; - tp->next = NULL; + if (new_one) { + memcpy(tp->addr, addr, sizeof(tp->addr)); + tp->next = NULL; + } tp->is_dummy_entry = FALSE; return tp; @@ -1795,6 +1799,7 @@ extern void add_ipv4_name(guint addr, const gchar *name) { int hash_idx; hashipv4_t *tp; + int new_one = TRUE; hash_idx = HASH_IPV4_ADDRESS(addr); @@ -1810,6 +1815,7 @@ extern void add_ipv4_name(guint addr, const gchar *name) return; } else { /* replace this dummy entry with the new one */ + new_one = FALSE; break; } } @@ -1824,8 +1830,10 @@ extern void add_ipv4_name(guint addr, const gchar *name) strncpy(tp->name, name, MAXNAMELEN); tp->name[MAXNAMELEN-1] = '\0'; - tp->addr = addr; - tp->next = NULL; + if (new_one) { + tp->addr = addr; + tp->next = NULL; + } tp->is_dummy_entry = FALSE; } /* add_ipv4_name */ @@ -1834,6 +1842,7 @@ extern void add_ipv6_name(struct e_in6_addr *addrp, const gchar *name) { int hash_idx; hashipv6_t *tp; + int new_one = TRUE; hash_idx = HASH_IPV6_ADDRESS(*addrp); @@ -1849,6 +1858,7 @@ extern void add_ipv6_name(struct e_in6_addr *addrp, const gchar *name) return; } else { /* replace this dummy entry with the new one */ + new_one = FALSE; break; } } @@ -1863,8 +1873,10 @@ extern void add_ipv6_name(struct e_in6_addr *addrp, const gchar *name) strncpy(tp->name, name, MAXNAMELEN); tp->name[MAXNAMELEN-1] = '\0'; - tp->addr = *addrp; - tp->next = NULL; + if (new_one) { + tp->addr = *addrp; + tp->next = NULL; + } tp->is_dummy_entry = FALSE; } /* add_ipv6_name */ diff --git a/file.c b/file.c index 2b3a020b7d..2f6d741bba 100644 --- a/file.c +++ b/file.c @@ -2742,6 +2742,7 @@ find_packet(capture_file *cf, gchar status_str[100]; int progbar_nextstep; int progbar_quantum; + char *title; start_fd = cf->current_frame; if (start_fd != NULL) { @@ -2763,6 +2764,7 @@ find_packet(capture_file *cf, g_get_current_time(&start_time); fdata = start_fd; + title = cf->sfilter?cf->sfilter:""; for (;;) { /* Create the progress bar if necessary. We check on every iteration of the loop, so that it takes no @@ -2770,7 +2772,7 @@ find_packet(capture_file *cf, large file, we might take considerably longer than that standard time in order to get to the next progress bar step). */ if (progbar == NULL) - progbar = delayed_create_progress_dlg("Searching", cf->sfilter, + progbar = delayed_create_progress_dlg("Searching", title, FALSE, &stop_flag, &start_time, progbar_val); /* Update the progress bar, but do it only N_PROGBAR_UPDATES times;