[FFmpeg-devel] [PATCH] Fix return value check for open()
Benoit Fouet
benoit.fouet
Mon Jul 27 14:37:59 CEST 2009
On 2009-07-27 13:47, Martin Storsj? wrote:
> On Fri, 24 Jul 2009, M?ns Rullg?rd wrote:
>
>> Martin Storsj? <martin at martin.st> writes:
>>
>>> Hi,
>>>
>>> According to all manuals I've checked (both linux & darwin manpages, and
>>> msdn docs), open() returns exactly -1 on error, not any generic negative
>>> number. The attached patch fixes the return value check in
>>> libavformat/file.c.
>>>
>>> On WinCE, the return values from successful open() calls are negative
>>> sometimes, making url_open() calls fail randomly. This is fixed by the
>>> attached patch.
>>>
>>> diff --git a/libavformat/file.c b/libavformat/file.c
>>> index da0ce15..d2cb530 100644
>>> --- a/libavformat/file.c
>>> +++ b/libavformat/file.c
>>> @@ -51,7 +51,7 @@ static int file_open(URLContext *h, const char *filename, int flags)
>>> access |= O_BINARY;
>>> #endif
>>> fd = open(filename, access, 0666);
>>> - if (fd < 0)
>>> + if (fd == -1)
>>> return AVERROR(ENOENT);
>>> h->priv_data = (void *) (intptr_t) fd;
>>> return 0;
>> Patch looks OK. That said, this is what SUSv3 says on open:
>>
>> Upon successful completion, the function shall open the file and
>> return a non-negative integer [...]. Otherwise, -1 shall be
>> returned [...].
>>
>> So yes, checking for -1 is correct. However, I consider other
>> negative return values an OS bug.
>
> Ok, anyone care to apply?
>
done
More information about the ffmpeg-devel
mailing list