diff options
Diffstat (limited to 'ckcapi-session.c')
-rw-r--r-- | ckcapi-session.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/ckcapi-session.c b/ckcapi-session.c index dc35ce0..5daae6e 100644 --- a/ckcapi-session.c +++ b/ckcapi-session.c @@ -550,7 +550,7 @@ void purge_duplicate_objects(CkCapiArray* arr) { CkCapiHash* checks; - CkCapiObject* v; + CK_OBJECT_HANDLE* v; size_t i; checks = ckcapi_hash_new(); @@ -559,15 +559,15 @@ purge_duplicate_objects(CkCapiArray* arr) for(i = 0; i < arr->len; ) { - v = ckcapi_array_index(arr, CkCapiObject*, i); - if(ckcapi_hash_get(checks, &v, sizeof(CkCapiObject*))) + v = &ckcapi_array_index(arr, CK_OBJECT_HANDLE, i); + if(ckcapi_hash_get(checks, v, sizeof(CK_OBJECT_HANDLE))) { ckcapi_array_remove_index(arr, i); /* Look at same i again */ } else { - if(!ckcapi_hash_set(checks, &v, sizeof(CkCapiObject*), &v)) + if(!ckcapi_hash_set(checks, v, sizeof(CK_OBJECT_HANDLE), v)) break; ++i; } @@ -589,7 +589,7 @@ ckcapi_session_find_init(CkCapiSession* sess, CK_ATTRIBUTE_PTR match, if(sess->operation_type != OPERATION_NONE) return CKR_OPERATION_ACTIVE; - arr = ckcapi_array_new(0, 1, sizeof(CkCapiObject*)); + arr = ckcapi_array_new(0, 1, sizeof(CK_OBJECT_HANDLE)); if(!arr) return CKR_HOST_MEMORY; @@ -633,7 +633,8 @@ ckcapi_session_find(CkCapiSession* sess, CK_OBJECT_HANDLE_PTR objects, arr = (CkCapiArray*)sess->operation_data; *object_count = (max_object_count > arr->len ? arr->len : max_object_count); for(i = 0; i < *object_count; ++i) - objects[i] = ckcapi_array_index(arr, CkCapiObject*, i)->id; + objects[i] = ckcapi_array_index(arr, CK_OBJECT_HANDLE, i); + ckcapi_array_remove_range(arr, 0, *object_count); return CKR_OK; |