diff options
Diffstat (limited to 'src/emu/fileio.c')
-rw-r--r-- | src/emu/fileio.c | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/src/emu/fileio.c b/src/emu/fileio.c index 8ac8d96598f..4883c199d4a 100644 --- a/src/emu/fileio.c +++ b/src/emu/fileio.c @@ -144,10 +144,8 @@ emu_file::emu_file(UINT32 openflags) m_crc(0), m_openflags(openflags), m_zipfile(NULL), - m_zipdata(NULL), m_ziplength(0), m__7zfile(NULL), - m__7zdata(NULL), m__7zlength(0), m_remove_on_close(false) { @@ -162,10 +160,8 @@ emu_file::emu_file(const char *searchpath, UINT32 openflags) m_crc(0), m_openflags(openflags), m_zipfile(NULL), - m_zipdata(NULL), m_ziplength(0), m__7zfile(NULL), - m__7zdata(NULL), m__7zlength(0), m_remove_on_close(false) { @@ -239,15 +235,15 @@ hash_collection &emu_file::hashes(const char *types) return m_hashes; // if we have ZIP data, just hash that directly - if (m__7zdata != NULL) + if (m__7zdata.count() != 0) { - m_hashes.compute(m__7zdata, m__7zlength, needed); + m_hashes.compute(m__7zdata, m__7zdata.count(), needed); return m_hashes; } - if (m_zipdata != NULL) + if (m_zipdata.count() != 0) { - m_hashes.compute(m_zipdata, m_ziplength, needed); + m_hashes.compute(m_zipdata, m_zipdata.count(), needed); return m_hashes; } @@ -411,13 +407,8 @@ void emu_file::close() core_fclose(m_file); m_file = NULL; - if (m__7zdata != NULL) - global_free(m__7zdata); - m__7zdata = NULL; - - if (m_zipdata != NULL) - global_free(m_zipdata); - m_zipdata = NULL; + m__7zdata.reset(); + m_zipdata.reset(); if (m_remove_on_close) osd_rmfile(m_fullpath); @@ -739,27 +730,25 @@ file_error emu_file::attempt_zipped() file_error emu_file::load_zipped_file() { assert(m_file == NULL); - assert(m_zipdata == NULL); + assert(m_zipdata.count() == 0); assert(m_zipfile != NULL); // allocate some memory - m_zipdata = global_alloc_array(UINT8, m_ziplength); + m_zipdata.resize(m_ziplength); // read the data into our buffer and return - zip_error ziperr = zip_file_decompress(m_zipfile, m_zipdata, m_ziplength); + zip_error ziperr = zip_file_decompress(m_zipfile, m_zipdata, m_zipdata.count()); if (ziperr != ZIPERR_NONE) { - global_free(m_zipdata); - m_zipdata = NULL; + m_zipdata.reset(); return FILERR_FAILURE; } // convert to RAM file - file_error filerr = core_fopen_ram(m_zipdata, m_ziplength, m_openflags, &m_file); + file_error filerr = core_fopen_ram(m_zipdata, m_zipdata.count(), m_openflags, &m_file); if (filerr != FILERR_NONE) { - global_free(m_zipdata); - m_zipdata = NULL; + m_zipdata.reset(); return FILERR_FAILURE; } @@ -866,27 +855,25 @@ file_error emu_file::attempt__7zped() file_error emu_file::load__7zped_file() { assert(m_file == NULL); - assert(m__7zdata == NULL); + assert(m__7zdata.count() == 0); assert(m__7zfile != NULL); // allocate some memory - m__7zdata = global_alloc_array(UINT8, m__7zlength); + m__7zdata.resize(m__7zlength); // read the data into our buffer and return - _7z_error _7zerr = _7z_file_decompress(m__7zfile, m__7zdata, m__7zlength); + _7z_error _7zerr = _7z_file_decompress(m__7zfile, m__7zdata, m__7zdata.count()); if (_7zerr != _7ZERR_NONE) { - global_free(m__7zdata); - m__7zdata = NULL; + m__7zdata.reset(); return FILERR_FAILURE; } // convert to RAM file - file_error filerr = core_fopen_ram(m__7zdata, m__7zlength, m_openflags, &m_file); + file_error filerr = core_fopen_ram(m__7zdata, m__7zdata.count(), m_openflags, &m_file); if (filerr != FILERR_NONE) { - global_free(m__7zdata); - m__7zdata = NULL; + m__7zdata.reset(); return FILERR_FAILURE; } |