[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Should vtable->dlloader_init be called in lt_dlloader_add?
From: |
Ralf Wildenhues |
Subject: |
Re: Should vtable->dlloader_init be called in lt_dlloader_add? |
Date: |
Sun, 24 Jan 2010 10:54:20 +0100 |
User-agent: |
Mutt/1.5.20 (2009-10-28) |
* Ralf Wildenhues wrote on Sun, Jan 24, 2010 at 10:36:54AM CET:
> * Peter Rosin wrote on Fri, Jan 22, 2010 at 10:12:11AM CET:
> > As mentioned in another mail, should not lt_dlloader_add
> > call vtable->dlloader_init? That seems appropriate when
> > lt_dlloader_remove calls vtable->dlloade_exit...
> >
> > Like this (completely untested), just showing what I mean...
>
> Yes, I think this is an improvement. It is an API change
> however. I think we can argue that it is a compatible change,
> since .dlloader_init was undocumented before, and calling it
> a second time needs to be a no-op (we need to fix preopen.c!).
Argl. Wrong. The documentation contains:
/* User modules are responsible for their own initialisation. */
if (myloader_init () != 0)
return MYLOADER_INIT_ERROR;
[...]
Note that if there is any initialisation required for the loader, it
must be performed manually before the loader is registered - libltdl
doesn't handle user loader initialisation.
so we cannot easily change that. :-/
Invoking the .dlloader_init pointer invokes undefined behavior for
existing code which doesn't initialize this member. So this would be an
incompatible API change. I don't think it is worth breaking the API for
this.
Cheers,
Ralf