diff options
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 |
commit | 7175f0ae1b3a441fa477ea80774cd89b26d09fd9 (patch) | |
tree | 1a1074c69a55f7d26d1cfb8a01bff6f88ade216e | |
parent | b3e608e957dccbe4ce2a11336f7532f3009acf91 (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.h | 2 | ||||
-rw-r--r-- | src/emu/cpu/vtlb.c | 2 | ||||
-rw-r--r-- | src/emu/cpu/vtlb.h | 2 | ||||
-rw-r--r-- | src/osd/windows/netdev_pcap.c | 6 |
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; } |