[FFmpeg-devel] [PATCH] swscale/swscale_unscaled: Fix undefined NULL + 0

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Wed Sep 28 22:43:56 EEST 2022


Michael Niedermayer:
> On Wed, Sep 28, 2022 at 08:39:09PM +0200, Andreas Rheinhardt wrote:
>> Affected the fitsdec-gbrp16 FATE-test.
>>
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
>> ---
>>  libswscale/swscale_unscaled.c | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
>> index 8838cc8b53..0b97377934 100644
>> --- a/libswscale/swscale_unscaled.c
>> +++ b/libswscale/swscale_unscaled.c
>> @@ -695,7 +695,7 @@ static void packed16togbra16(const uint8_t *src, int srcStride,
>>              }
>>          }
>>          for (i = 0; i < 4; i++)
>> -            dst[i] += dstStride[i] >> 1;
>> +            dst[i] = FF_PTR_ADD(dst[i], dstStride[i] >> 1);
>>      }
>>  }
>>  
>> @@ -729,8 +729,8 @@ static int Rgb16ToPlanarRgb16Wrapper(SwsContext *c, const uint8_t *src[],
>>      }
>>  
>>      for(i=0; i<4; i++) {
>> -        dst2013[i] += stride2013[i] * srcSliceY / 2;
>> -        dst1023[i] += stride1023[i] * srcSliceY / 2;
>> +        dst2013[i] = FF_PTR_ADD(dst2013[i], stride2013[i] * srcSliceY / 2);
>> +        dst1023[i] = FF_PTR_ADD(dst1023[i], stride1023[i] * srcSliceY / 2);
>>      }
> 
> is there a reason not to check the pointer in the loop ?
> as in
> for (i = 0; i < 4 && dst[i]; i++)
> 

I consider NULL + 0 to be sane and would be happy to see it being
defined in a future version of the spec. So I don't like adding checks
to workaround the insanities of the spec. Notice that FF_PTR_ADD() is
designed to allow the compiler to optimize the check away.

- Andreas



More information about the ffmpeg-devel mailing list