summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2013-02-07 04:25:04 +0000
committer cracyc <cracyc@users.noreply.github.com>2013-02-07 04:25:04 +0000
commit7175f0ae1b3a441fa477ea80774cd89b26d09fd9 (patch)
tree1a1074c69a55f7d26d1cfb8a01bff6f88ade216e /src/osd
parentb3e608e957dccbe4ce2a11336f7532f3009acf91 (diff)
pcap: don't crash on exit when wpcap.dll is unloaded before pcap_close is called. (nw)
i386: fix bug (nw)
Diffstat (limited to 'src/osd')
-rw-r--r--src/osd/windows/netdev_pcap.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/osd/windows/netdev_pcap.c b/src/osd/windows/netdev_pcap.c
index 92dc87b0b42..32e9e6b2f3d 100644
--- a/src/osd/windows/netdev_pcap.c
+++ b/src/osd/windows/netdev_pcap.c
@@ -10,6 +10,7 @@ static void (*pcap_close_dl)(pcap_t *) = NULL;
static int (*pcap_setfilter_dl)(pcap_t *, struct bpf_program *) = NULL;
static int (*pcap_sendpacket_dl)(pcap_t *, u_char *, int) = NULL;
static int (*pcap_set_datalink_dl)(pcap_t *, int) = NULL;
+static HMODULE handle = NULL;
#include "emu.h"
#include "osdnet.h"
@@ -73,7 +74,7 @@ int netdev_pcap::recv_dev(UINT8 **buf)
netdev_pcap::~netdev_pcap()
{
- if(m_p) pcap_close_dl(m_p);
+ if(m_p && handle) pcap_close_dl(m_p);
}
static CREATE_NETDEV(create_pcap)
@@ -82,8 +83,6 @@ static CREATE_NETDEV(create_pcap)
return dynamic_cast<netdev *>(dev);
}
-static HMODULE handle = NULL;
-
void init_pcap()
{
pcap_if_t *devs;
@@ -134,4 +133,5 @@ void deinit_pcap()
{
clear_netdev();
FreeLibrary(handle);
+ handle = NULL;
}