On 03/23/2012 01:54 PM, Aneesh Dogra wrote:
> ---
> libavcodec/sunrastenc.c | 11 +++++++----
> 1 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/libavcodec/sunrastenc.c b/libavcodec/sunrastenc.c
> index a9b4749..1ed1d6e 100644
> --- a/libavcodec/sunrastenc.c
> +++ b/libavcodec/sunrastenc.c
> @@ -83,15 +83,18 @@ static void sunrast_image_write_image(AVCodecContext
> *avctx,
> if (s->type == RT_BYTE_ENCODED) {
> uint8_t value, value2;
> int run;
> - const uint8_t *end = pixels + avctx->height * linesize;
> + const uint8_t *start = linesize < 0 ? pixels + (avctx->height - 1) *
> linesize
> + : pixels;
> + const uint8_t *end = linesize < 0 ? pixels - linesize
> + : pixels + avctx->height *
> linesize;
>
> ptr = pixels;
>
> -#define GET_VALUE ptr >= end ? 0 : x >= len ? ptr[len-1] : ptr[x]
> +#define GET_VALUE ptr >= end || ptr < start ? 0 : x >= len ? ptr[len-1] :
> ptr[x]
>
> x = 0;
> value2 = GET_VALUE;
> - while (ptr < end) {
> + while (ptr < end && ptr >= start) {
> run = 1;
> value = value2;
> x++;
> @@ -101,7 +104,7 @@ static void sunrast_image_write_image(AVCodecContext
> *avctx,
> }
>
> value2 = GET_VALUE;
> - while (value2 == value && run < 256 && ptr < end) {
> + while (value2 == value && run < 256 && ptr < end && ptr >=
> start) {
> x++;
> run++;
> if (x >= alen) {
LGTM
-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel