diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-05-13 10:23:44 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-05-13 10:23:44 +0100 |
| commit | 4447fc2edd80d85c9779187e4f3a0405e6e4d443 (patch) | |
| tree | d5fa3d1be4b1192c86b44c4ac3fac7cfe62a09d3 /src/lib/subtitle_decoder.cc | |
| parent | dadf038492a94311db672af33b74367e84773553 (diff) | |
Don't allow image subtitle store to get too big.
Diffstat (limited to 'src/lib/subtitle_decoder.cc')
| -rw-r--r-- | src/lib/subtitle_decoder.cc | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/lib/subtitle_decoder.cc b/src/lib/subtitle_decoder.cc index edb291ab8..2efe9afb6 100644 --- a/src/lib/subtitle_decoder.cc +++ b/src/lib/subtitle_decoder.cc @@ -82,7 +82,22 @@ SubtitleDecoder::get (list<T> const & subs, list<ContentTimePeriod> const & sp, } } - /* XXX: should clear out _decoded_* at some point */ + /* Discard anything in _decoded_image_subtitles that is outside 5 seconds either side of period */ + + list<ContentImageSubtitle>::iterator i = _decoded_image_subtitles.begin(); + while (i != _decoded_image_subtitles.end()) { + list<ContentImageSubtitle>::iterator tmp = i; + ++tmp; + + if ( + i->period().to < (period.from - ContentTime::from_seconds (5)) || + i->period().from > (period.to + ContentTime::from_seconds (5)) + ) { + _decoded_image_subtitles.erase (i); + } + + i = tmp; + } return out; } |
