the nestegg packet was only freed by subsequent reads
Change-Id: Ib687a13907861c7575830783e47a596d85169cf1
virtual ~WebMVideoSource() {
if (input_file_)
fclose(input_file_);
- if (nestegg_ctx_)
+ if (nestegg_ctx_ != NULL) {
+ if (pkt_ != NULL) {
+ nestegg_free_packet(pkt_);
+ }
nestegg_destroy(nestegg_ctx_);
+ }
}
virtual void Init() {
do {
/* End of this packet, get another. */
- if (pkt_)
+ if (pkt_ != NULL) {
nestegg_free_packet(pkt_);
+ pkt_ = NULL;
+ }
int again = nestegg_read_packet(nestegg_ctx_, &pkt_);
ASSERT_GE(again, 0) << "nestegg_read_packet failed";
do {
/* End of this packet, get another. */
- if (webm_ctx->pkt)
+ if (webm_ctx->pkt) {
nestegg_free_packet(webm_ctx->pkt);
+ webm_ctx->pkt = NULL;
+ }
if (nestegg_read_packet(webm_ctx->nestegg_ctx, &webm_ctx->pkt) <= 0 ||
nestegg_packet_track(webm_ctx->pkt, &track)) {
}
void webm_free(struct WebmInputContext *webm_ctx) {
- if (webm_ctx && webm_ctx->nestegg_ctx)
+ if (webm_ctx && webm_ctx->nestegg_ctx) {
+ if (webm_ctx->pkt)
+ nestegg_free_packet(webm_ctx->pkt);
nestegg_destroy(webm_ctx->nestegg_ctx);
+ }
}