fix problem reading audiofiles compressed from vfs
This commit is contained in:
parent
b57675552f
commit
7023429790
|
|
@ -872,7 +872,8 @@ load(const Filename& filename, size_t &size) const {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
audioFile = vfs->open_read_file(binary_filename, true);
|
||||
PT(VirtualFile) audioFileHandle = vfs->get_file(binary_filename);
|
||||
audioFile = audioFile->open_read_file(true);
|
||||
|
||||
if (audioFile == (istream *)NULL) {
|
||||
// Unable to open.
|
||||
|
|
@ -881,26 +882,24 @@ load(const Filename& filename, size_t &size) const {
|
|||
}
|
||||
|
||||
// Determine the file size.
|
||||
audioFile->seekg(0, ios::end);
|
||||
size = (size_t)audioFile->tellg();
|
||||
audioFile->seekg(0, ios::beg);
|
||||
size = audioFileHandle->get_file_size(audioFile);
|
||||
|
||||
// Read the entire file into memory.
|
||||
char *buffer = new char[size];
|
||||
if (buffer == NULL) {
|
||||
audio_error("out-of-memory error while loading "<<filename);
|
||||
vfs->close_read_file(audioFile);
|
||||
audioFileHandle->close_read_file(audioFile);
|
||||
return NULL;
|
||||
}
|
||||
audioFile->read(buffer, size);
|
||||
if (!(*audioFile)) {
|
||||
audio_error("Read error while loading "<<filename);
|
||||
vfs->close_read_file(audioFile);
|
||||
audioFileHandle->close_read_file(audioFile);
|
||||
delete [] buffer;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
vfs->close_read_file(audioFile);
|
||||
audioFileHandle->close_read_file(audioFile);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue