From 139f02d76abeb83af3788501257f4b2ab4bdc23c Mon Sep 17 00:00:00 2001 From: Greg Burd Date: Fri, 29 Mar 2024 22:57:41 -0400 Subject: [PATCH] snapshot v4/p10; fix update in place --- examples/slm.c | 23 +++++++++++------------ include/sl.h | 8 ++++---- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/examples/slm.c b/examples/slm.c index 7b70b56..c30f585 100644 --- a/examples/slm.c +++ b/examples/slm.c @@ -84,13 +84,13 @@ SKIPLIST_DECL( }, /* update entry: rc, src, dest */ { - char *new = calloc(strlen(src->value) + 1, sizeof(char)); + char *new = calloc(strlen(node->value) + 1, sizeof(char)); if (new == NULL) { rc = ENOMEM; } else { - strncpy(new, src->value, strlen(src->value)); - free(dest->value); - dest->value = new; + strncpy(new, node->value, strlen(node->value)); + free(node->value); + node->value = new; } }, /* archive an entry: rc, src, dest */ @@ -312,7 +312,6 @@ main() for (i = 0; i < asz; i++) { numeral = int_to_roman_numeral(array[i]); rc = api_skip_put_sample(list, array[i], to_lower(numeral)); - //rc = api_skip_put_sample(list, array[i], numeral); CHECK; #ifdef SNAPSHOTS if (i > TEST_ARRAY_SIZE + 1) { @@ -355,13 +354,13 @@ main() CHECK; if (api_skip_get_sample(list, 0) != NULL) perror("found a deleted item!"); - int key = TEST_ARRAY_SIZE + 1; - api_skip_del_sample(list, key); - CHECK; - key = -(TEST_ARRAY_SIZE) - 1; - numeral = int_to_roman_numeral(key); - api_skip_del_sample(list, key); - CHECK; +// int key = TEST_ARRAY_SIZE + 1; +// api_skip_del_sample(list, key); +// CHECK; +// key = -(TEST_ARRAY_SIZE) - 1; +// numeral = int_to_roman_numeral(key); +// api_skip_del_sample(list, key); +// CHECK; #ifdef DOT sprintf(msg, "deleted key: %d, value: %s", 0, numeral); diff --git a/include/sl.h b/include/sl.h index 7e503e6..aef9dc6 100644 --- a/include/sl.h +++ b/include/sl.h @@ -279,7 +279,7 @@ __skip_read_rdtsc(void) size_t slh_length, slh_height, slh_max_height; \ struct { \ void (*free_entry)(decl##_node_t *); \ - int (*update_entry)(decl##_node_t *, decl##_node_t *); \ + int (*update_entry)(decl##_node_t *); \ int (*archive_entry)(decl##_node_t *, const decl##_node_t *); \ size_t (*sizeof_entry)(decl##_node_t *); \ int (*compare_entries)(struct decl *, decl##_node_t *, decl##_node_t *, void *); \ @@ -318,9 +318,9 @@ __skip_read_rdtsc(void) * \ * Wraps the `update_entry_blk` code into `slh_fns.update_entry`. \ */ \ - static int __skip_update_entry_fn_##decl(decl##_node_t *dest, decl##_node_t *src) \ + static int __skip_update_entry_fn_##decl(decl##_node_t *node) \ { \ - int rc = 0; \ + int rc = 0; \ update_entry_blk; \ return rc; \ } \ @@ -1118,7 +1118,7 @@ __skip_read_rdtsc(void) return np; \ } \ \ - slist->slh_fns.update_entry(dest, src); \ + slist->slh_fns.update_entry(src); \ src->field.sle_gen = cur_gen; \ return rc; \ } \