From 7662be246fa603345ec44776ca0f09984328c4bd Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sun, 14 Apr 2024 06:54:27 +1000 Subject: Fixed a few class memory access warnings. --- src/emu/render.cpp | 3 +- src/lib/util/xmlfile.cpp | 8 +- src/mame/atari/atarifdc.cpp | 12 +-- src/mame/atari/atarifdc.h | 22 +++--- src/mame/atari/lynx_m.cpp | 8 +- src/mame/bfm/bfcobra.cpp | 154 ++++++++++++++++++------------------ src/mame/canon/x07.cpp | 12 ++- src/mame/ensoniq/esq1.cpp | 7 +- src/mame/koei/pasogo.cpp | 2 +- src/mame/sinclair/specnext_divmmc.h | 1 - 10 files changed, 118 insertions(+), 111 deletions(-) diff --git a/src/emu/render.cpp b/src/emu/render.cpp index 2b9efa1c7fa..571f4e79084 100644 --- a/src/emu/render.cpp +++ b/src/emu/render.cpp @@ -336,7 +336,8 @@ render_texture::render_texture() m_curseq(0) { m_sbounds.set(0, -1, 0, -1); - memset(m_scaled, 0, sizeof(m_scaled)); + for (auto &elem : m_scaled) + elem.seqid = 0; } diff --git a/src/lib/util/xmlfile.cpp b/src/lib/util/xmlfile.cpp index 7cd6a4eecda..db8d87930e2 100644 --- a/src/lib/util/xmlfile.cpp +++ b/src/lib/util/xmlfile.cpp @@ -76,10 +76,12 @@ void write_escaped(core_file &file, std::string const &str) struct parse_info { + parse_info() { memset(&parser, 0, sizeof(parser)); } + XML_Parser parser; file::ptr rootnode; - data_node * curnode; - uint32_t flags; + data_node * curnode = nullptr; + uint32_t flags = 0; }; @@ -813,7 +815,7 @@ std::string normalize_string(std::string_view string) static bool expat_setup_parser(parse_info &info, parse_options const *opts) { // setup info structure - memset(&info, 0, sizeof(info)); + info = parse_info(); if (opts != nullptr) { info.flags = opts->flags; diff --git a/src/mame/atari/atarifdc.cpp b/src/mame/atari/atarifdc.cpp index 8573b8ff179..1684e7ddf02 100644 --- a/src/mame/atari/atarifdc.cpp +++ b/src/mame/atari/atarifdc.cpp @@ -15,6 +15,7 @@ #include "formats/atari_dsk.h" +#include #include #include @@ -741,8 +742,8 @@ static const floppy_interface atari_floppy_interface = DEFINE_DEVICE_TYPE(ATARI_FDC, atari_fdc_device, "atari_fdc", "Atari FDC") -atari_fdc_device::atari_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ATARI_FDC, tag, owner, clock), +atari_fdc_device::atari_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, ATARI_FDC, tag, owner, clock), m_floppy(*this, "floppy%u", 0U), m_pokey(*this, "^pokey"), m_pia(*this, "^pia"), @@ -763,9 +764,10 @@ atari_fdc_device::atari_fdc_device(const machine_config &mconfig, const char *ta void atari_fdc_device::device_start() { - memset(m_serout_buff, 0, sizeof(m_serout_buff)); - memset(m_serin_buff, 0, sizeof(m_serin_buff)); - memset(m_drv, 0, sizeof(m_drv)); + std::fill(std::begin(m_serout_buff), std::end(m_serout_buff), 0); + std::fill(std::begin(m_serin_buff), std::end(m_serin_buff), 0); + for (auto &drv : m_drv) + drv = atari_drive(); for (auto &floppy : m_floppy) floppy->floppy_install_load_proc(_atari_load_proc); diff --git a/src/mame/atari/atarifdc.h b/src/mame/atari/atarifdc.h index 968a34c474d..92d82485f51 100644 --- a/src/mame/atari/atarifdc.h +++ b/src/mame/atari/atarifdc.h @@ -37,17 +37,17 @@ private: struct atari_drive { - std::unique_ptr image; /* alloc'd image */ - int type; /* type of image (XFD, ATR, DSK) */ - int mode; /* 0 read only, != 0 read/write */ - int density; /* 0 SD, 1 MD, 2 DD */ - int header_skip; /* number of bytes in format header */ - int tracks; /* number of tracks (35,40,77,80) */ - int heads; /* number of heads (1,2) */ - int spt; /* sectors per track (18,26) */ - int seclen; /* sector length (128,256) */ - int bseclen; /* boot sector length (sectors 1..3) */ - int sectors; /* total sectors, ie. tracks x heads x spt */ + std::unique_ptr image; // alloc'd image + int type = 0; // type of image (XFD, ATR, DSK) + int mode = 0; // 0 read only, != 0 read/write + int density = 0; // 0 SD, 1 MD, 2 DD + int header_skip = 0; // number of bytes in format header + int tracks = 0; // number of tracks (35,40,77,80) + int heads = 0; // number of heads (1,2) + int spt = 0; // sectors per track (18,26) + int seclen = 0; // sector length (128,256) + int bseclen = 0; // boot sector length (sectors 1..3) + int sectors = 0; // total sectors, ie. tracks x heads x spt }; required_device_array m_floppy; diff --git a/src/mame/atari/lynx_m.cpp b/src/mame/atari/lynx_m.cpp index 296f47daae1..cacb368fa94 100644 --- a/src/mame/atari/lynx_m.cpp +++ b/src/mame/atari/lynx_m.cpp @@ -1320,7 +1320,7 @@ TIM_BORROWOUT EQU %00000001 void lynx_state::timer_init(int which) { - memset(&m_timer[which], 0, sizeof(LYNX_TIMER)); + m_timer[which] = LYNX_TIMER(); m_timer[which].timer = timer_alloc(FUNC(lynx_state::timer_shot), this); save_item(NAME(m_timer[which].bakup), which); @@ -1557,7 +1557,7 @@ void lynx_state::update_screen_timing() void lynx_state::uart_reset() { - memset(&m_uart, 0, sizeof(m_uart)); + m_uart = UART(); } TIMER_CALLBACK_MEMBER(lynx_state::uart_loopback_timer) @@ -1879,8 +1879,8 @@ void lynx_state::machine_reset() m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); m_maincpu->set_input_line(M65SC02_IRQ_LINE, CLEAR_LINE); - memset(&m_suzy, 0, sizeof(m_suzy)); - memset(&m_mikey, 0, sizeof(m_mikey)); + m_suzy = SUZY(); + m_mikey = MIKEY(); m_suzy.data[0x88] = 0x01; m_suzy.data[0x90] = 0x00; diff --git a/src/mame/bfm/bfcobra.cpp b/src/mame/bfm/bfcobra.cpp index 5c89a5be102..56862d17205 100644 --- a/src/mame/bfm/bfcobra.cpp +++ b/src/mame/bfm/bfcobra.cpp @@ -155,14 +155,14 @@ union ADDR_REG }; /* Blitter register flag bits */ -#define CMD_RUN 0x01 -#define CMD_COLST 0x02 -#define CMD_PARRD 0x04 /* Never used? */ -#define CMD_SRCUP 0x08 -#define CMD_DSTUP 0x10 -#define CMD_LT0 0x20 -#define CMD_LT1 0x40 -#define CMD_LINEDRAW 0x80 +static constexpr uint8_t CMD_RUN = 0x01; +static constexpr uint8_t CMD_COLST = 0x02; +static constexpr uint8_t CMD_PARRD = 0x04; /* Never used? */ +static constexpr uint8_t CMD_SRCUP = 0x08; +static constexpr uint8_t CMD_DSTUP = 0x10; +static constexpr uint8_t CMD_LT0 = 0x20; +static constexpr uint8_t CMD_LT1 = 0x40; +static constexpr uint8_t CMD_LINEDRAW = 0x80; /* All unconfirmed */ @@ -172,20 +172,20 @@ union ADDR_REG #define SRCDST_A_1 0x80 /* This might be correct for line drawing? */ /* These appear to be correct */ -#define MODE_SSIGN 0x80 -#define MODE_DSIGN 0x40 -#define MODE_YFRAC 0x20 -#define MODE_BITTOBYTE 0x04 -#define MODE_PALREMAP 0x10 - -#define CMPFUNC_LT 0x01 -#define CMPFUNC_EQ 0x02 -#define CMPFUNC_GT 0x04 -#define CMPFUNC_BEQ 0x08 -#define CMPFUNC_LOG0 0x10 -#define CMPFUNC_LOG1 0x20 -#define CMPFUNC_LOG2 0x40 -#define CMPFUNC_LOG3 0x80 +static constexpr uint8_t MODE_SSIGN = 0x80; +static constexpr uint8_t MODE_DSIGN = 0x40; +static constexpr uint8_t MODE_YFRAC = 0x20; +static constexpr uint8_t MODE_BITTOBYTE = 0x04; +static constexpr uint8_t MODE_PALREMAP = 0x10; + +static constexpr uint8_t CMPFUNC_LT = 0x01; +static constexpr uint8_t CMPFUNC_EQ = 0x02; +static constexpr uint8_t CMPFUNC_GT = 0x04; +static constexpr uint8_t CMPFUNC_BEQ = 0x08; +static constexpr uint8_t CMPFUNC_LOG0 = 0x10; +static constexpr uint8_t CMPFUNC_LOG1 = 0x20; +static constexpr uint8_t CMPFUNC_LOG2 = 0x40; +static constexpr uint8_t CMPFUNC_LOG3 = 0x80; /* Blitter state @@ -194,26 +194,26 @@ struct bf_blitter_t { ADDR_REG program; - uint8_t control = 0; - uint8_t status = 0; + uint8_t control = 0; + uint8_t status = 0; - uint8_t command = 0; + uint8_t command = 0; ADDR_REG source; ADDR_REG dest; - uint8_t modectl = 0; - uint8_t compfunc = 0; - uint8_t outercnt = 0; + uint8_t modectl = 0; + uint8_t compfunc = 0; + uint8_t outercnt = 0; - uint8_t innercnt = 0; - uint8_t step = 0; - uint8_t pattern = 0; + uint8_t innercnt = 0; + uint8_t step = 0; + uint8_t pattern = 0; }; #define LOOPTYPE ( ( blitter.command&0x60 ) >> 5 ) struct fdc_t { - uint8_t MSR = 0; + uint8_t MSR = 0; int side = 0; int track = 0; @@ -231,8 +231,8 @@ struct fdc_t int cmd_cnt = 0; int res_len = 0; int res_cnt = 0; - uint8_t cmd[10]{}; - uint8_t results[8]{}; + uint8_t cmd[10]{}; + uint8_t results[8]{}; }; @@ -304,7 +304,7 @@ protected: void reset_fdc(); void exec_w_phase(uint8_t data); void init_ram(); - void command_phase(struct fdc_t &fdc, uint8_t data); + void command_phase(fdc_t &fdc, uint8_t data); inline uint8_t* blitter_get_addr(uint32_t addr); inline void z80_bank(int num, int data); @@ -339,7 +339,7 @@ private: uint8_t m_col7bit[256]{}; uint8_t m_col6bit[256]{}; struct bf_blitter_t m_blitter; - struct fdc_t m_fdc; + fdc_t m_fdc; required_device m_maincpu; required_device m_audiocpu; required_device m_acia6850_0; @@ -1058,7 +1058,7 @@ enum command void bfcobra_state::reset_fdc() { - memset(&m_fdc, 0, sizeof(m_fdc)); + m_fdc = fdc_t(); m_fdc.MSR = 0x80; m_fdc.phase = COMMAND; @@ -1075,71 +1075,70 @@ uint8_t bfcobra_state::fdctrl_r() uint8_t bfcobra_state::fddata_r() { - struct fdc_t &fdc = m_fdc; - #define BPS 1024 - #define SPT 10 - #define BPT 1024*10 + constexpr int BPS = 1024; + constexpr int SPT = 10; + constexpr int BPT = BPS * SPT; uint8_t val = 0; - if (fdc.phase == EXECUTION_R) + if (m_fdc.phase == EXECUTION_R) { - switch (fdc.cmd[0] & 0x1f) + switch (m_fdc.cmd[0] & 0x1f) { /* Specify */ case READ_DATA: { - if (fdc.setup_read) + if (m_fdc.setup_read) { - fdc.track = fdc.cmd[2]; - fdc.side = fdc.cmd[3]; - fdc.sector = fdc.cmd[4]; - fdc.number = fdc.cmd[5]; - fdc.stop_track = fdc.cmd[6]; - //int GPL = fdc.cmd[7]; - //int DTL = fdc.cmd[8]; - - fdc.setup_read = 0; - fdc.byte_pos = 0; + m_fdc.track = m_fdc.cmd[2]; + m_fdc.side = m_fdc.cmd[3]; + m_fdc.sector = m_fdc.cmd[4]; + m_fdc.number = m_fdc.cmd[5]; + m_fdc.stop_track = m_fdc.cmd[6]; + //int GPL = m_fdc.cmd[7]; + //int DTL = m_fdc.cmd[8]; + + m_fdc.setup_read = 0; + m_fdc.byte_pos = 0; } - fdc.offset = (BPT * fdc.track*2) + (fdc.side ? BPT : 0) + (BPS * (fdc.sector-1)) + fdc.byte_pos++; - val = *(memregion("user2")->base() + fdc.offset); + m_fdc.offset = (BPT * m_fdc.track*2) + (m_fdc.side ? BPT : 0) + (BPS * (m_fdc.sector-1)) + m_fdc.byte_pos++; + val = *(memregion("user2")->base() + m_fdc.offset); /* Move on to next sector? */ - if (fdc.byte_pos == 1024) + if (m_fdc.byte_pos == 1024) { - fdc.byte_pos = 0; + m_fdc.byte_pos = 0; - if (fdc.sector == fdc.stop_track || ++fdc.sector == 11) + if (m_fdc.sector == m_fdc.stop_track || ++m_fdc.sector == 11) { /* End of read operation */ - fdc.MSR = 0xd0; - fdc.phase = RESULTS; + m_fdc.MSR = 0xd0; + m_fdc.phase = RESULTS; - fdc.results[0] = 0; - fdc.results[1] = 0; - fdc.results[2] = 0; + m_fdc.results[0] = 0; + m_fdc.results[1] = 0; + m_fdc.results[2] = 0; - fdc.results[3] = 0; - fdc.results[4] = 0; - fdc.results[5] = 0; - fdc.results[6] = 0; + m_fdc.results[3] = 0; + m_fdc.results[4] = 0; + m_fdc.results[5] = 0; + m_fdc.results[6] = 0; } } break; } } } - else if (fdc.phase == RESULTS) + else if (m_fdc.phase == RESULTS) { - val = fdc.results[fdc.res_cnt++]; + val = m_fdc.results[m_fdc.res_cnt++]; - if (fdc.res_cnt == fdc.res_len) + if (m_fdc.res_cnt == m_fdc.res_len) { - fdc.phase = COMMAND; - fdc.res_cnt = 0; - fdc.MSR &= ~0x40; + m_fdc.phase = COMMAND; + m_fdc.res_cnt = 0; + m_fdc.MSR &= ~0x40; } } @@ -1148,12 +1147,11 @@ uint8_t bfcobra_state::fddata_r() void bfcobra_state::fdctrl_w(uint8_t data) { - struct fdc_t &fdc = m_fdc; - switch (fdc.phase) + switch (m_fdc.phase) { case COMMAND: { - command_phase(fdc, data); + command_phase(m_fdc, data); break; } case EXECUTION_W: @@ -1168,7 +1166,7 @@ void bfcobra_state::fdctrl_w(uint8_t data) } } -void bfcobra_state::command_phase(struct fdc_t &fdc, uint8_t data) +void bfcobra_state::command_phase(fdc_t &fdc, uint8_t data) { if (fdc.cmd_cnt == 0) { diff --git a/src/mame/canon/x07.cpp b/src/mame/canon/x07.cpp index 9c2ab5994f2..9c9bbcd93d6 100644 --- a/src/mame/canon/x07.cpp +++ b/src/mame/canon/x07.cpp @@ -35,6 +35,8 @@ #include "softlist_dev.h" #include "speaker.h" +#include + /*************************************************************************** T6834 IMPLEMENTATION @@ -1447,10 +1449,12 @@ void x07_state::machine_reset() memset(m_regs_r, 0, sizeof(m_regs_r)); memset(m_regs_w, 0, sizeof(m_regs_w)); memset(m_alarm, 0, sizeof(m_alarm)); - memset(&m_in, 0, sizeof(m_in)); - memset(&m_out, 0, sizeof(m_out)); - memset(&m_locate, 0, sizeof(m_locate)); - memset(&m_cursor, 0, sizeof(m_cursor)); + std::fill(std::begin(m_in.data), std::end(m_in.data), 0); + m_in.read = m_in.write = 0; + std::fill(std::begin(m_out.data), std::end(m_out.data), 0); + m_out.read = m_out.write = 0; + m_locate = lcd_position(); + m_cursor = lcd_position(); memset(m_prn_buffer, 0, sizeof(m_prn_buffer)); memset(m_lcd_map, 0, sizeof(m_lcd_map)); diff --git a/src/mame/ensoniq/esq1.cpp b/src/mame/ensoniq/esq1.cpp index 2bcc5360c9e..ca643fdd81e 100644 --- a/src/mame/ensoniq/esq1.cpp +++ b/src/mame/ensoniq/esq1.cpp @@ -335,7 +335,8 @@ void esq1_filters::recalc_filter(filter &f) void esq1_filters::device_start() { stream = stream_alloc(8, 2, 44100); - memset(filters, 0, sizeof(filters)); + for(auto & elem : filters) + elem = filter(); for(auto & elem : filters) recalc_filter(elem); } @@ -389,8 +390,8 @@ namespace { class esq1_state : public driver_device { public: - esq1_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + esq1_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_duart(*this, "duart"), m_filters(*this, "filters"), diff --git a/src/mame/koei/pasogo.cpp b/src/mame/koei/pasogo.cpp index bdff84f6ae3..990fcc0926b 100644 --- a/src/mame/koei/pasogo.cpp +++ b/src/mame/koei/pasogo.cpp @@ -219,7 +219,7 @@ void pasogo_state::machine_start() { system_time systime; - memset(&m_vg230, 0, sizeof(m_vg230)); + m_vg230 = decltype(m_vg230)(); m_vg230.pmu.write_protected = true; machine().base_datetime(systime); diff --git a/src/mame/sinclair/specnext_divmmc.h b/src/mame/sinclair/specnext_divmmc.h index 27d6023e188..6a8a68215fe 100644 --- a/src/mame/sinclair/specnext_divmmc.h +++ b/src/mame/sinclair/specnext_divmmc.h @@ -81,7 +81,6 @@ private: bool automap_nmi_instant_on() const noexcept; bool automap_nmi_delayed_on() const noexcept; bool automap() const noexcept; - }; DECLARE_DEVICE_TYPE(SPECNEXT_DIVMMC, specnext_divmmc_device) -- cgit v1.2.3