https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68187
--- Comment #2 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
(In reply to Bernd Edlinger from comment #1)
[...]
> in crypto/engine/eng_lib.c:
>
> int engine_free_util(ENGINE *e, int locked)
> {
> int i;
>
> if (e == NULL) {
> ENGINEerr(ENGINE_F_ENGINE_FREE_UTIL, ERR_R_PASSED_NULL_PARAMETER);
> return 0;
> }
> if (locked)
> i = CRYPTO_add(&e->struct_ref, -1, CRYPTO_LOCK_ENGINE);
> else
> i = --e->struct_ref;
> engine_ref_debug(e, 0, -1)
> if (i > 0)
> return 1;
[...]
Thanks; this is visible in full at:
https://github.com/openssl/openssl/blob/master/crypto/engine/eng_lib.c#L116
Looking at
https://github.com/openssl/openssl/blob/master/crypto/engine/eng_int.h#L86
I see that engine_ref_debug is of the form
fprintf (/* various things */);
when
# ifdef ENGINE_REF_COUNT_DEBUG
and it's empty when ENGINE_REF_COUNT_DEBUG isn't defined.