snapshot v4/p10; fix update in place
This commit is contained in:
parent
62eafa3cd6
commit
139f02d76a
|
@ -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);
|
||||
|
|
|
@ -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; \
|
||||
} \
|
||||
|
|
Loading…
Reference in a new issue