libextractor

GNU libextractor
Log | Files | Refs | Submodules | README | LICENSE

commit 8d6bfc09d4cd977eac92a5cf7011e07ffe31bbf8
parent ac25c5ff4f4ae5b0a99703dd3096ca2ac58a9c7c
Author: Heikki Lindholm <holin@iki.fi>
Date:   Tue, 22 Jul 2008 06:26:37 +0000

ffmpeg: sync to libswscale r27332; upstream fixed memleak


Diffstat:
Msrc/plugins/thumbnailffmpeg/README | 2+-
Msrc/plugins/thumbnailffmpeg/ffmpeg/libswscale/swscale.c | 80++++++++++++++++++++++++++++---------------------------------------------------
2 files changed, 29 insertions(+), 53 deletions(-)

diff --git a/src/plugins/thumbnailffmpeg/README b/src/plugins/thumbnailffmpeg/README @@ -12,7 +12,7 @@ svn export -r 13836 --ignore-externals svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpe svn export -r 27100 svn://svn.mplayerhq.hu/mplayer/trunk/libswscale ffmpeg/libswscale sync with ffmpeg: FFREV=14311 -SWSREV=27330 +SWSREV=27332 cd /tmp svn co -r $FFREV --ignore-externals svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg svn co -r $SWSREV svn://svn.mplayerhq.hu/mplayer/trunk/libswscale ffmpeg/libswscale diff --git a/src/plugins/thumbnailffmpeg/ffmpeg/libswscale/swscale.c b/src/plugins/thumbnailffmpeg/ffmpeg/libswscale/swscale.c @@ -932,6 +932,7 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF int minFilterSize; double *filter=NULL; double *filter2=NULL; + int ret= -1; #if defined(ARCH_X86) if (flags & SWS_CPU_CAPS_MMX) asm volatile("emms\n\t"::: "memory"); //FIXME this should not be required but it IS (even for non-MMX versions) @@ -1144,7 +1145,7 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF if (outVec != &scaleFilter) sws_freeVec(outVec); } - av_free(filter); filter=NULL; + av_freep(&filter); /* try to reduce the filter-size (step1 find size and shift left) */ // Assume it is near normalized (*0.5 or *2.0 is OK but * 0.001 is not). @@ -1210,12 +1211,9 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF assert(minFilterSize > 0); filterSize= (minFilterSize +(filterAlign-1)) & (~(filterAlign-1)); assert(filterSize > 0); - if (filterSize >= MAX_FILTER_SIZE) - { - av_free(filter2); - return -1; - } filter= av_malloc(filterSize*dstW*sizeof(double)); + if (filterSize >= MAX_FILTER_SIZE || !filter) + goto error; *outFilterSize= filterSize; if (flags&SWS_PRINT_INFO) @@ -1231,7 +1229,6 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF else filter[i*filterSize + j]= filter2[i*filter2Size + j]; } } - av_free(filter2); filter2=NULL; //FIXME try to align filterpos if possible @@ -1299,8 +1296,11 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF (*outFilter)[j + i]= (*outFilter)[j + i - (*outFilterSize)]; } + ret=0; +error: av_free(filter); - return 0; + av_free(filter2); + return ret; } #ifdef COMPILE_MMX2 @@ -2824,8 +2824,7 @@ void sws_printVec(SwsVector *a){ void sws_freeVec(SwsVector *a){ if (!a) return; - av_free(a->coeff); - a->coeff=NULL; + av_freep(&a->coeff); a->length=0; av_free(a); } @@ -2848,48 +2847,30 @@ void sws_freeContext(SwsContext *c){ if (c->lumPixBuf) { for (i=0; i<c->vLumBufSize; i++) - { - av_free(c->lumPixBuf[i]); - c->lumPixBuf[i]=NULL; - } - av_free(c->lumPixBuf); - c->lumPixBuf=NULL; + av_freep(&c->lumPixBuf[i]); + av_freep(&c->lumPixBuf); } if (c->chrPixBuf) { for (i=0; i<c->vChrBufSize; i++) - { - av_free(c->chrPixBuf[i]); - c->chrPixBuf[i]=NULL; - } - av_free(c->chrPixBuf); - c->chrPixBuf=NULL; + av_freep(&c->chrPixBuf[i]); + av_freep(&c->chrPixBuf); } - av_free(c->vLumFilter); - c->vLumFilter = NULL; - av_free(c->vChrFilter); - c->vChrFilter = NULL; - av_free(c->hLumFilter); - c->hLumFilter = NULL; - av_free(c->hChrFilter); - c->hChrFilter = NULL; + av_freep(&c->vLumFilter); + av_freep(&c->vChrFilter); + av_freep(&c->hLumFilter); + av_freep(&c->hChrFilter); #ifdef HAVE_ALTIVEC - av_free(c->vYCoeffsBank); - c->vYCoeffsBank = NULL; - av_free(c->vCCoeffsBank); - c->vCCoeffsBank = NULL; + av_freep(&c->vYCoeffsBank); + av_freep(&c->vCCoeffsBank); #endif - av_free(c->vLumFilterPos); - c->vLumFilterPos = NULL; - av_free(c->vChrFilterPos); - c->vChrFilterPos = NULL; - av_free(c->hLumFilterPos); - c->hLumFilterPos = NULL; - av_free(c->hChrFilterPos); - c->hChrFilterPos = NULL; + av_freep(&c->vLumFilterPos); + av_freep(&c->vChrFilterPos); + av_freep(&c->hLumFilterPos); + av_freep(&c->hChrFilterPos); #if defined(ARCH_X86) && defined(CONFIG_GPL) #ifdef MAP_ANONYMOUS @@ -2903,16 +2884,11 @@ void sws_freeContext(SwsContext *c){ c->funnyUVCode=NULL; #endif /* defined(ARCH_X86) */ - av_free(c->lumMmx2Filter); - c->lumMmx2Filter=NULL; - av_free(c->chrMmx2Filter); - c->chrMmx2Filter=NULL; - av_free(c->lumMmx2FilterPos); - c->lumMmx2FilterPos=NULL; - av_free(c->chrMmx2FilterPos); - c->chrMmx2FilterPos=NULL; - av_free(c->yuvTable); - c->yuvTable=NULL; + av_freep(&c->lumMmx2Filter); + av_freep(&c->chrMmx2Filter); + av_freep(&c->lumMmx2FilterPos); + av_freep(&c->chrMmx2FilterPos); + av_freep(&c->yuvTable); av_free(c); }