ffmdec: Do not manually free streams on read_header error, this is always
handled by upper layers. Fixes double-frees (issue 2003). Instead call ffm_close to ensure rc_eqs are freed also in the error case. Originally committed as revision 24490 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
							parent
							
								
									6de5b7c6b8
								
							
						
					
					
						commit
						527b46ba26
					
				@ -252,6 +252,8 @@ static void adjust_write_index(AVFormatContext *s)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int ffm_close(AVFormatContext *s);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int ffm_read_header(AVFormatContext *s, AVFormatParameters *ap)
 | 
					static int ffm_read_header(AVFormatContext *s, AVFormatParameters *ap)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    FFMContext *ffm = s->priv_data;
 | 
					    FFMContext *ffm = s->priv_data;
 | 
				
			||||||
@ -381,12 +383,7 @@ static int ffm_read_header(AVFormatContext *s, AVFormatParameters *ap)
 | 
				
			|||||||
    ffm->first_packet = 1;
 | 
					    ffm->first_packet = 1;
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
 fail:
 | 
					 fail:
 | 
				
			||||||
    for(i=0;i<s->nb_streams;i++) {
 | 
					    ffm_close(s);
 | 
				
			||||||
        st = s->streams[i];
 | 
					 | 
				
			||||||
        if (st) {
 | 
					 | 
				
			||||||
            av_free(st);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return -1;
 | 
					    return -1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user