summaryrefslogtreecommitdiffstatshomepage
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
parentb3e608e957dccbe4ce2a11336f7532f3009acf91 (diff)
pcap: don't crash on exit when wpcap.dll is unloaded before pcap_close is called. (nw)
i386: fix bug (nw)
-rw-r--r--src/emu/cpu/i386/i386priv.h2
-rw-r--r--src/emu/cpu/vtlb.c2
-rw-r--r--src/emu/cpu/vtlb.h2
-rw-r--r--src/osd/windows/netdev_pcap.c6
4 files changed, 6 insertions, 6 deletions
diff --git a/src/emu/cpu/i386/i386priv.h b/src/emu/cpu/i386/i386priv.h
index b068039bb2d..a001bc3a575 100644
--- a/src/emu/cpu/i386/i386priv.h
+++ b/src/emu/cpu/i386/i386priv.h
@@ -586,7 +586,7 @@ INLINE int translate_address(i386_state *cpustate, int pl, int type, UINT32 *add
return TRUE;
const vtlb_entry *table = vtlb_table(cpustate->vtlb);
- int index = *address >> 12;
+ UINT32 index = *address >> 12;
vtlb_entry entry = table[index];
if(type == TRANSLATE_FETCH)
type = TRANSLATE_READ;
diff --git a/src/emu/cpu/vtlb.c b/src/emu/cpu/vtlb.c
index da583fb77e6..ee3991a6a55 100644
--- a/src/emu/cpu/vtlb.c
+++ b/src/emu/cpu/vtlb.c
@@ -229,7 +229,7 @@ void vtlb_load(vtlb_state *vtlb, int entrynum, int numpages, offs_t address, vtl
vtlb_dynload - load a dynamic VTLB entry
-------------------------------------------------*/
-void vtlb_dynload(vtlb_state *vtlb, int index, offs_t address, vtlb_entry value)
+void vtlb_dynload(vtlb_state *vtlb, UINT32 index, offs_t address, vtlb_entry value)
{
vtlb_entry entry = vtlb->table[index];
diff --git a/src/emu/cpu/vtlb.h b/src/emu/cpu/vtlb.h
index af83989c461..fe5eea55754 100644
--- a/src/emu/cpu/vtlb.h
+++ b/src/emu/cpu/vtlb.h
@@ -70,7 +70,7 @@ int vtlb_fill(vtlb_state *vtlb, offs_t address, int intention);
void vtlb_load(vtlb_state *vtlb, int entrynum, int numpages, offs_t address, vtlb_entry value);
/* load a dynamic VTLB entry */
-void vtlb_dynload(vtlb_state *vtlb, int index, offs_t address, vtlb_entry value);
+void vtlb_dynload(vtlb_state *vtlb, UINT32 index, offs_t address, vtlb_entry value);
/* ----- flushing ----- */
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;
}