Thanks Dave! Given the below, this might actually turn into a one line fix to call dlerror() just before calling dlsym(). That should clear any existing error conditions and your existing code would continue to work, I think.
Will Dave Mielke wrote: > [quoted lines by Willie Walker on 2008/08/28 at 20:58 -0400] > >> The problem is that brltty is jumping to dlerror too soon -- it should >> first check the result of dlsym. The reason for this is that dlerror >> returns the message for the _last failed_ dlsym, not the result of the >> _last call_ to dlsym. > > There appears to be a philosophical difference between Solaris and Linux > here. > The Linux man page for dlsym() says the following: > > Since the value of the symbol could actually be NULL (so that a NULL > return > from dlsym() need not indicate an error), the correct way to test for an > error is to call dlerror() to clear any old error conditions, then call > dlsym(), and then call dlerror() again, saving its return value into a > variable, and check whether this saved value is not NULL. > >> Internally, the Sun C library is doing some magic, which results in a >> caught/expected failure on the _ex_unwind symbol. The change above checks >> the >> result of the call to dlsym before jumping directly to dlerror. >> >> I hope you guys can accept this change! > > Yes, it'll be included but with an additional test that dlerror() returns > non-NULL. That should make the same code work on both platforms. > _______________________________________________ This message was sent via the BRLTTY mailing list. To post a message, send an e-mail to: [email protected] For general information, go to: http://mielke.cc/mailman/listinfo/brltty
