On 29/04/15 22:54, Andreas Cadhalpun wrote:
> On 29.04.2015 21:28, Luca Barbato wrote:
>> Probably something like the following is simpler though.
>>
>> diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c
>> index ed28107..8a58845 100644
>> --- a/libavformat/nutdec.c
>> +++ b/libavformat/nutdec.c
>> @@ -707,7 +707,7 @@ static int nut_read_header(AVFormatContext *s)
>>          pos = find_startcode(bc, MAIN_STARTCODE, pos) + 1;
>>          if (pos < 0 + 1) {
>>              av_log(s, AV_LOG_ERROR, "No main startcode found.\n");
>> -            return AVERROR_INVALIDDATA;
>> +            goto fail;
>>          }
>>      } while (decode_main_header(nut) < 0);
>>
>> @@ -717,7 +717,7 @@ static int nut_read_header(AVFormatContext *s)
>>          pos = find_startcode(bc, STREAM_STARTCODE, pos) + 1;
>>          if (pos < 0 + 1) {
>>              av_log(s, AV_LOG_ERROR, "Not all stream headers found.\n");
>> -            return AVERROR_INVALIDDATA;
>> +            goto fail;
>>          }
>>          if (decode_stream_header(nut) >= 0)
>>              initialized_stream_count++;
>> @@ -731,7 +731,7 @@ static int nut_read_header(AVFormatContext *s)
>>
>>          if (startcode == 0) {
>>              av_log(s, AV_LOG_ERROR, "EOF before video frames\n");
>> -            return AVERROR_INVALIDDATA;
>> +            goto fail;
>>          } else if (startcode == SYNCPOINT_STARTCODE) {
>>              nut->next_startcode = startcode;
>>              break;
>> @@ -754,6 +754,11 @@ static int nut_read_header(AVFormatContext *s)
>>      ff_metadata_conv_ctx(s, NULL, ff_nut_metadata_conv);
>>
>>      return 0;
>> +
>> +fail:
>> +    nut_read_close(s);
>> +
>> +    return AVERROR_INVALIDDATA;
>>  }
>>
>>  static int decode_frame_header(NUTContext *nut, int64_t *pts, int
>> *stream_id,
> 
> Yes, that's simpler, but my variant is more easy to change in the future,
> if e.g. some path should return a different error code.
> I have no idea how likely that is, though.

I can look at that codebase again tonight, I'd rather keep things the
simplest for as long it is possible.

lu


_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to