summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/fileio.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/fileio.c')
-rw-r--r--src/emu/fileio.c49
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;
}