Skip to content

Commit bb43c74

Browse files
benjefferymergify[bot]
authored andcommitted
Update kastore to 2.1.1
1 parent 9955a69 commit bb43c74

File tree

6 files changed

+44
-35
lines changed

6 files changed

+44
-35
lines changed

c/subprojects/kastore/VERSION

Lines changed: 0 additions & 1 deletion
This file was deleted.

c/subprojects/kastore/VERSION.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2.1.1

c/subprojects/kastore/kastore.c

Lines changed: 39 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ kas_strerror(int err)
3434
ret = "Bad open mode; must be \"r\", \"w\", or \"a\"";
3535
break;
3636
case KAS_ERR_BAD_FLAGS:
37-
ret = "Unknown flags specified. Only (KAS_GET_TAKES_OWNERSHIP, "
38-
"KAS_READ_ALL or ) or 0 can be specified "
37+
ret = "Unknown flags specified. Only (KAS_GET_TAKES_OWNERSHIP and/or"
38+
"KAS_READ_ALL) or 0 can be specified "
3939
"for open, and KAS_BORROWS_ARRAY or 0 for put";
4040
break;
4141
case KAS_ERR_NO_MEMORY:
@@ -683,14 +683,39 @@ kastore_close(kastore_t *self)
683683
return ret;
684684
}
685685

686+
static int
687+
kastore_find_item(kastore_t *self, const char *key, size_t key_len, kaitem_t **item)
688+
{
689+
int ret = KAS_ERR_KEY_NOT_FOUND;
690+
kaitem_t search;
691+
search.key = (char *) malloc(key_len);
692+
search.key_len = key_len;
693+
694+
if (self->mode != KAS_READ) {
695+
ret = KAS_ERR_ILLEGAL_OPERATION;
696+
goto out;
697+
}
698+
if (search.key == NULL) {
699+
ret = KAS_ERR_NO_MEMORY;
700+
goto out;
701+
}
702+
memcpy(search.key, key, key_len);
703+
*item = bsearch(
704+
&search, self->items, self->num_items, sizeof(kaitem_t), compare_items);
705+
if (*item == NULL) {
706+
goto out;
707+
}
708+
ret = 0;
709+
out:
710+
kas_safe_free(search.key);
711+
return ret;
712+
}
713+
686714
int KAS_WARN_UNUSED
687715
kastore_contains(kastore_t *self, const char *key, size_t key_len)
688716
{
689-
void *array;
690-
size_t array_len;
691-
int type;
692-
int ret = kastore_get(self, key, key_len, &array, &array_len, &type);
693-
717+
kaitem_t *item;
718+
int ret = kastore_find_item(self, key, key_len, &item);
694719
if (ret == 0) {
695720
ret = 1;
696721
} else if (ret == KAS_ERR_KEY_NOT_FOUND) {
@@ -709,24 +734,9 @@ int KAS_WARN_UNUSED
709734
kastore_get(kastore_t *self, const char *key, size_t key_len, void **array,
710735
size_t *array_len, int *type)
711736
{
712-
int ret = KAS_ERR_KEY_NOT_FOUND;
713-
kaitem_t search;
714737
kaitem_t *item;
715-
search.key = (char *) malloc(key_len);
716-
search.key_len = key_len;
717-
718-
if (self->mode != KAS_READ) {
719-
ret = KAS_ERR_ILLEGAL_OPERATION;
720-
goto out;
721-
}
722-
if (search.key == NULL) {
723-
ret = KAS_ERR_NO_MEMORY;
724-
goto out;
725-
}
726-
memcpy(search.key, key, key_len);
727-
item = bsearch(
728-
&search, self->items, self->num_items, sizeof(kaitem_t), compare_items);
729-
if (item == NULL) {
738+
int ret = kastore_find_item(self, key, key_len, &item);
739+
if (ret != 0) {
730740
goto out;
731741
}
732742
if (item->array == NULL) {
@@ -743,7 +753,6 @@ kastore_get(kastore_t *self, const char *key, size_t key_len, void **array,
743753
}
744754
ret = 0;
745755
out:
746-
kas_safe_free(search.key);
747756
return ret;
748757
}
749758

@@ -908,13 +917,13 @@ kastore_bput(kastore_t *self, const char *key, size_t key_len, const void *array
908917
if (ret != 0) {
909918
goto out;
910919
}
911-
/* TEMP FIX UNTIL NEXT KASTORE RELEASE WITH
912-
* https://github.com/tskit-dev/kastore/pull/185 */
913920
if (array == NULL) {
921+
/* Both can't be null, so assign a dummy array */
914922
item->array = malloc(1);
915923
} else {
916924
item->borrowed_array = array;
917925
}
926+
item->borrowed_array = array;
918927
item->array_len = array_len;
919928
out:
920929
return ret;
@@ -1154,10 +1163,10 @@ kastore_print_state(kastore_t *self, FILE *out)
11541163
item = self->items + j;
11551164
fprintf(out,
11561165
"%.*s: type=%d, key_start=%zu, key_len=%zu, key=%p, "
1157-
"array_start=%zu, array_len=%zu, array=%p, borrowed_array=%p\n",
1166+
"array_start=%zu, array_len=%zu, array=%p\n",
11581167
(int) item->key_len, item->key, item->type, item->key_start, item->key_len,
1159-
(void *) item->key, item->array_start, item->array_len, (void *) item->array,
1160-
(void *) item->borrowed_array);
1168+
(void *) item->key, item->array_start, item->array_len,
1169+
(void *) item->array);
11611170
}
11621171
fprintf(out, "============================\n");
11631172
}

c/subprojects/kastore/kastore.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ to the API or ABI are introduced, i.e., the addition of a new function.
157157
The library patch version. Incremented when any changes not relevant to the
158158
to the API or ABI are introduced, i.e., internal refactors of bugfixes.
159159
*/
160-
#define KAS_VERSION_PATCH 0
160+
#define KAS_VERSION_PATCH 1
161161
/** @} */
162162

163163
#define KAS_HEADER_SIZE 64
@@ -465,7 +465,7 @@ As for :c:func:`kastore_put` except the key must be NULL-terminated C string.
465465
@param array The array.
466466
@param array_len The number of elements in the array.
467467
@param type The type of the array.
468-
@param flags The insertion flags. Currently unused.
468+
@param flags The insertion flags, only KAS_BORROWS_ARRAY or 0 is a valid.
469469
@return Return 0 on success or a negative value on failure.
470470
*/
471471
int kastore_puts(kastore_t *self, const char *key, const void *array, size_t array_len,

c/subprojects/kastore/meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
project('kastore', ['c', 'cpp'],
2-
version: files('VERSION'),
2+
version: files('VERSION.txt'),
33
default_options: [
44
'c_std=c99',
55
'cpp_std=c++11',

python/tests/test_lowlevel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3542,7 +3542,7 @@ class TestModuleFunctions:
35423542

35433543
def test_kastore_version(self):
35443544
version = _tskit.get_kastore_version()
3545-
assert version == (2, 1, 0)
3545+
assert version == (2, 1, 1)
35463546

35473547
def test_tskit_version(self):
35483548
version = _tskit.get_tskit_version()

0 commit comments

Comments
 (0)