Browse Source

flac: fix leak; properly close stream upon closing FlacAudioCursor

rdb 7 years ago
parent
commit
5dd0db300b
2 changed files with 6 additions and 1 deletions
  1. 5 1
      panda/src/movies/flacAudioCursor.cxx
  2. 1 0
      panda/src/movies/flacAudioCursor.h

+ 5 - 1
panda/src/movies/flacAudioCursor.cxx

@@ -59,7 +59,8 @@ FlacAudioCursor::
 FlacAudioCursor(FlacAudio *src, std::istream *stream) :
 FlacAudioCursor(FlacAudio *src, std::istream *stream) :
   MovieAudioCursor(src),
   MovieAudioCursor(src),
   _is_valid(false),
   _is_valid(false),
-  _drflac(nullptr)
+  _drflac(nullptr),
+  _stream(stream)
 {
 {
   nassertv(stream != nullptr);
   nassertv(stream != nullptr);
   nassertv(stream->good());
   nassertv(stream->good());
@@ -91,6 +92,9 @@ FlacAudioCursor::
   if (_drflac != nullptr) {
   if (_drflac != nullptr) {
     drflac_close(_drflac);
     drflac_close(_drflac);
   }
   }
+  if (_stream != nullptr) {
+    VirtualFileSystem::close_read_file(_stream);
+  }
 }
 }
 
 
 /**
 /**

+ 1 - 0
panda/src/movies/flacAudioCursor.h

@@ -41,6 +41,7 @@ public:
 
 
 protected:
 protected:
   drflac *_drflac;
   drflac *_drflac;
+  std::istream *_stream;
 
 
 public:
 public:
   static TypeHandle get_class_type() {
   static TypeHandle get_class_type() {