The open() system call in f8 really broken...

Tomas Mraz tmraz at redhat.com
Thu Aug 16 22:40:22 UTC 2007


On Thu, 2007-08-16 at 16:49 -0500, Jima wrote:
> On Thu, 16 Aug 2007, Jakub Jelinek wrote:
> > This has been mentioned here several times already in other threads.
> > In this case you are not calling open(1), but some function pointer.
> > And therefore it is undesirable to let it be expanded as function-like
> > macro (which POSIX allows).
> > The right fix is to use one of:
> > retval = (test_io_backing_manager->open)(name, flags, &data->real);
> > retval = (*test_io_backing_manager->open)(name, flags, &data->real);
> > retval = test_io_backing_manager->(open)(name, flags, &data->real);
> > or, far less desirable, but what standard allows,
> > #undef open
> > above this.  The last one means that no open(1) error checking will be
> > done in the rest of the source file, which is not a good idea.
> 
>   I've gone with the last of these suggestions for alsa-oss, partly because 
> that's what someone (lpoetter?) chose to do for alsa-lib.  Bad practice, 
> perhaps, but the standard disclaimer applies: patches accepted. ;-)
IMO, in this case (alsa-oss library is overriding the standard library
open call) it is the exactly right thing to do.

-- 
Tomas Mraz
No matter how far down the wrong road you've gone, turn back.
                                              Turkish proverb




More information about the Fedora-maintainers mailing list