Copy DH key (if available) in addition to the bare parameters
[openssl.git] / crypto / mem_dbg.c
index 6068dcc806296531eeba073de55a717d3c939823..14770c073377df6bc107b5ac89c197d38c89d286 100644 (file)
@@ -214,7 +214,7 @@ void CRYPTO_dbg_set_options(long bits)
        options = bits;
        }
 
-long CRYPTO_dbg_get_options()
+long CRYPTO_dbg_get_options(void)
        {
        return options;
        }
@@ -257,7 +257,7 @@ static APP_INFO *pop_info()
        if (amih != NULL)
                {
                tmp.thread=CRYPTO_thread_id();
-               if ((ret=(APP_INFO *)lh_delete(amih,(char *)&tmp)) != NULL)
+               if ((ret=(APP_INFO *)lh_delete(amih,&tmp)) != NULL)
                        {
                        APP_INFO *next=ret->next;
 
@@ -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);
        }