This is the mail archive of the
cygwin-developers
mailing list for the Cygwin project.
Re: [Fwd: dlopen regression in 1.7? (or is it just me?)]
Corinna Vinschen wrote:
> On Aug 12 02:14, Dave Korn wrote:
>> Corinna Vinschen wrote:
>>
>> Yes, this is a real problem. It's 2am over here; I'll get onto it in the
>> morning. Sorry for the inconvenience; I really didn't expect people to try to
>> unload their override of a vital library function at runtime and still expect it
>> to work!
>
> Erm... hang on. Neither the test application, not the test DLLs are
> C++ applications. It's all pure C. The problem, afaics is, that
> this statement:
>
> if (newu)
> newu->cxx_malloc = &__cygwin_cxx_malloc;
>
> will *always* replace the cxx_malloc pointer with the one from the just
> loaded DLL, even if the DLL doesn't *have* any C++ malloc overrides.
I said it was 2am. Yes, that is the problem.
> Maybe the code should be changed to check first if at least one of the
> existing pointers is about to be replaced, or, in other words, if at
> least one of the pointers in __cygwin_cxx_malloc is != NULL.
>
> Or, what if not cxx_malloc is changed, but rather the content, along these
> lines:
>
> if (newu)
> *newu->cxx_malloc = __cygwin_cxx_malloc;
Yes, this is the approach I would like to take. Sorry all, I had a long sleep
but I'm on it now. Expect patches during the afternoon.
cheers,
DaveK