[Scummvm-cvs-logs] CVS: scummvm/sound vorbis.cpp,1.16,1.17
Max Horn
fingolfin at users.sourceforge.net
Sat Sep 4 03:14:00 CEST 2004
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/sword2/driver d_sound.cpp,1.120,1.121
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.278,1.279 actor.h,1.59,1.60 akos.cpp,1.156,1.157 script_v6he.cpp,2.108,2.109 scumm.cpp,1.165,1.166 scumm.h,1.466,1.467
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11917
Modified Files:
vorbis.cpp
Log Message:
Fix for bug #1022265 (Memory leak in vorbis.cpp?)
Index: vorbis.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/vorbis.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- vorbis.cpp 29 Jun 2004 23:27:18 -0000 1.16
+++ vorbis.cpp 4 Sep 2004 10:12:22 -0000 1.17
@@ -32,7 +32,7 @@
#include <vorbis/vorbisfile.h>
-AudioStream *makeVorbisStream(OggVorbis_File *file, int duration);
+static AudioStream *makeVorbisStream(OggVorbis_File *file, int duration);
#pragma mark -
@@ -211,11 +211,12 @@
int16 _buffer[4096];
const int16 *_bufferEnd;
const int16 *_pos;
+ bool _deleteFileAfterUse;
void refill();
inline bool eosIntern() const;
public:
- VorbisInputStream(OggVorbis_File *file, int duration);
+ VorbisInputStream(OggVorbis_File *file, int duration, bool deleteFileAfterUse);
~VorbisInputStream();
int readBuffer(int16 *buffer, const int numSamples);
@@ -234,8 +235,10 @@
#endif
-VorbisInputStream::VorbisInputStream(OggVorbis_File *file, int duration)
- : _ov_file(file), _bufferEnd(_buffer + ARRAYSIZE(_buffer)) {
+VorbisInputStream::VorbisInputStream(OggVorbis_File *file, int duration, bool deleteFileAfterUse)
+ : _ov_file(file),
+ _bufferEnd(_buffer + ARRAYSIZE(_buffer)),
+ _deleteFileAfterUse(deleteFileAfterUse) {
// Check the header, determine if this is a stereo stream
_numChannels = ov_info(_ov_file, -1)->channels;
@@ -252,6 +255,8 @@
VorbisInputStream::~VorbisInputStream() {
ov_clear(_ov_file);
+ if (_deleteFileAfterUse)
+ delete _ov_file;
}
inline int16 VorbisInputStream::read() {
@@ -320,8 +325,8 @@
_bufferEnd = (int16 *)read_pos;
}
-AudioStream *makeVorbisStream(OggVorbis_File *file, int duration) {
- return new VorbisInputStream(file, duration);
+static AudioStream *makeVorbisStream(OggVorbis_File *file, int duration) {
+ return new VorbisInputStream(file, duration, false);
}
AudioStream *makeVorbisStream(File *file, uint32 size) {
@@ -340,7 +345,7 @@
return 0;
} else {
file->incRef();
- return new VorbisInputStream(ov_file, 0);
+ return new VorbisInputStream(ov_file, 0, true);
}
}
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/sword2/driver d_sound.cpp,1.120,1.121
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.278,1.279 actor.h,1.59,1.60 akos.cpp,1.156,1.157 script_v6he.cpp,2.108,2.109 scumm.cpp,1.165,1.166 scumm.h,1.466,1.467
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list