Loading CHANGES +6 −1 Original line number Original line Diff line number Diff line Loading @@ -4,7 +4,12 @@ Changes between 0.9.8g and 0.9.9 [xx XXX xxxx] Changes between 0.9.8g and 0.9.9 [xx XXX xxxx] *) To support arbitrarily-typed thread IDs, deprecate the existing *) Not all of this is true any longer. Will have to be updated to reflect all subsequent changes to cryptlib.c. --bodo To support arbitrarily-typed thread IDs, deprecate the existing type-specific APIs for a general purpose CRYPTO_THREADID type-specific APIs for a general purpose CRYPTO_THREADID interface. Applications can choose the thread ID interface. Applications can choose the thread ID callback type it wishes to register, as before; callback type it wishes to register, as before; Loading crypto/cryptlib.c +9 −8 Original line number Original line Diff line number Diff line Loading @@ -434,29 +434,30 @@ void CRYPTO_set_idptr_callback(void *(*func)(void)) void CRYPTO_THREADID_set(CRYPTO_THREADID *id) void CRYPTO_THREADID_set(CRYPTO_THREADID *id) { { memset(id, 0, sizeof(*id)); if (id_callback) id->ulong = id_callback(); else id->ulong = 0; if (idptr_callback) if (idptr_callback) id->ptr = idptr_callback(); id->ptr = idptr_callback(); else if (id_callback) id->ulong = id_callback(); else else id->ptr = &errno; id->ptr = &errno; } } int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *id1, const CRYPTO_THREADID *id2) int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *id1, const CRYPTO_THREADID *id2) { { if (id1->ptr != id2->ptr) return ((id1->ptr < id2->ptr) ? -1 : 1); if (id1->ulong != id2->ulong) if (id1->ulong != id2->ulong) return ((id1->ulong < id2->ulong) ? -1 : 1); return ((id1->ulong < id2->ulong) ? -1 : 1); if (id1->ptr != id2->ptr) return ((id1->ptr < id2->ptr) ? -1 : 1); return 0; return 0; } } unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id) unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id) { { if (idptr_callback || !id_callback) /* will need further processing to arrive at a good hash (mem_dbg.c uses this) */ return (unsigned long)id->ptr; return id->ulong + (unsigned long)id->ptr; return id->ulong; } } void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dst, const CRYPTO_THREADID *src) void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dst, const CRYPTO_THREADID *src) Loading crypto/crypto.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -307,8 +307,8 @@ DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS) * apart when someone decides to extend this in some way. */ * apart when someone decides to extend this in some way. */ typedef struct crypto_threadid typedef struct crypto_threadid { { void *ptr; unsigned long ulong; unsigned long ulong; void *ptr; } CRYPTO_THREADID; } CRYPTO_THREADID; /* Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA /* Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA Loading Loading
CHANGES +6 −1 Original line number Original line Diff line number Diff line Loading @@ -4,7 +4,12 @@ Changes between 0.9.8g and 0.9.9 [xx XXX xxxx] Changes between 0.9.8g and 0.9.9 [xx XXX xxxx] *) To support arbitrarily-typed thread IDs, deprecate the existing *) Not all of this is true any longer. Will have to be updated to reflect all subsequent changes to cryptlib.c. --bodo To support arbitrarily-typed thread IDs, deprecate the existing type-specific APIs for a general purpose CRYPTO_THREADID type-specific APIs for a general purpose CRYPTO_THREADID interface. Applications can choose the thread ID interface. Applications can choose the thread ID callback type it wishes to register, as before; callback type it wishes to register, as before; Loading
crypto/cryptlib.c +9 −8 Original line number Original line Diff line number Diff line Loading @@ -434,29 +434,30 @@ void CRYPTO_set_idptr_callback(void *(*func)(void)) void CRYPTO_THREADID_set(CRYPTO_THREADID *id) void CRYPTO_THREADID_set(CRYPTO_THREADID *id) { { memset(id, 0, sizeof(*id)); if (id_callback) id->ulong = id_callback(); else id->ulong = 0; if (idptr_callback) if (idptr_callback) id->ptr = idptr_callback(); id->ptr = idptr_callback(); else if (id_callback) id->ulong = id_callback(); else else id->ptr = &errno; id->ptr = &errno; } } int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *id1, const CRYPTO_THREADID *id2) int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *id1, const CRYPTO_THREADID *id2) { { if (id1->ptr != id2->ptr) return ((id1->ptr < id2->ptr) ? -1 : 1); if (id1->ulong != id2->ulong) if (id1->ulong != id2->ulong) return ((id1->ulong < id2->ulong) ? -1 : 1); return ((id1->ulong < id2->ulong) ? -1 : 1); if (id1->ptr != id2->ptr) return ((id1->ptr < id2->ptr) ? -1 : 1); return 0; return 0; } } unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id) unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id) { { if (idptr_callback || !id_callback) /* will need further processing to arrive at a good hash (mem_dbg.c uses this) */ return (unsigned long)id->ptr; return id->ulong + (unsigned long)id->ptr; return id->ulong; } } void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dst, const CRYPTO_THREADID *src) void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dst, const CRYPTO_THREADID *src) Loading
crypto/crypto.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -307,8 +307,8 @@ DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS) * apart when someone decides to extend this in some way. */ * apart when someone decides to extend this in some way. */ typedef struct crypto_threadid typedef struct crypto_threadid { { void *ptr; unsigned long ulong; unsigned long ulong; void *ptr; } CRYPTO_THREADID; } CRYPTO_THREADID; /* Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA /* Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA Loading