diff --git a/src/org_pEp_jniadapter_AbstractEngine.cc b/src/org_pEp_jniadapter_AbstractEngine.cc index 64ce299..98a3a5c 100644 --- a/src/org_pEp_jniadapter_AbstractEngine.cc +++ b/src/org_pEp_jniadapter_AbstractEngine.cc @@ -69,7 +69,7 @@ extern "C" { int examine_identity(pEp_identity *ident, void *arg) { locked_queue< pEp_identity * > *queue = (locked_queue< pEp_identity * > *) arg; - queue->push_back(ident); + queue->push_back(identity_dup(ident)); return 0; } @@ -90,6 +90,13 @@ extern "C" { PEP_STATUS status = do_keymanagement(retrieve_next_identity, arg); locked_queue< pEp_identity * > *queue = (locked_queue< pEp_identity * > *) arg; + + while (queue->size()) { + pEp_identity *ident = queue->front(); + queue->pop_front(); + free_identity(ident); + } + delete queue; return (void *) status;