X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=crypto%2Fmem_dbg.c;h=f3ad5ff235feccf249b400b5887f713191fdc371;hb=ec1258dd446e39649f846ee870721ca4dfe56cff;hp=657530750d96ae9c55c365b2ec90fd497f3aeaeb;hpb=a8eeb155b5323809113e57e62de887b31f9fba7b;p=oweals%2Fopenssl.git diff --git a/crypto/mem_dbg.c b/crypto/mem_dbg.c index 657530750d..f3ad5ff235 100644 --- a/crypto/mem_dbg.c +++ b/crypto/mem_dbg.c @@ -629,7 +629,7 @@ static void print_leak(MEM *m, MEM_LEAK *l) #ifdef LEVITTE_DEBUG if (amip) { - fprintf(stderr, "Thread switch detected i backtrace!!!!\n"); + fprintf(stderr, "Thread switch detected in backtrace!!!!\n"); abort(); } #endif @@ -661,21 +661,29 @@ void CRYPTO_mem_leaks(BIO *b) #endif } -static void (*mem_cb)()=NULL; +union void_fn_to_char_u + { + char *char_p; + void (*fn_p)(); + }; static void cb_leak(MEM *m, char *cb) { - void (*mem_callback)()=(void (*)())cb; - mem_callback(m->order,m->file,m->line,m->num,m->addr); + union void_fn_to_char_u mem_callback; + + mem_callback.char_p=cb; + mem_callback.fn_p(m->order,m->file,m->line,m->num,m->addr); } void CRYPTO_mem_leaks_cb(void (*cb)()) { + union void_fn_to_char_u mem_cb; + if (mh == NULL) return; CRYPTO_w_lock(CRYPTO_LOCK_MALLOC2); - mem_cb=cb; - lh_doall_arg(mh,(void (*)())cb_leak,(char *)mem_cb); - mem_cb=NULL; + mem_cb.fn_p=cb; + lh_doall_arg(mh,(void (*)())cb_leak,mem_cb.char_p); + mem_cb.char_p=NULL; CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC2); }