9
9
10
10
/* Private flag used to indicate when we have opened the file ourselves
11
11
* and need to free it. */
12
- #define OWN_FILE (1 << 31)
12
+ /* Note: we use 1<<14 to keep this flag at the end of the flag space,
13
+ * and this is the highest bit that can be guaranteed to fit into
14
+ * an int. */
15
+ #define OWN_FILE (1 << 14)
13
16
14
17
const char *
15
18
kas_strerror (int err )
@@ -261,7 +264,7 @@ kastore_read_descriptors(kastore_t *self)
261
264
if (size + KAS_HEADER_SIZE > self -> file_size ) {
262
265
goto out ;
263
266
}
264
- read_buffer = malloc (size );
267
+ read_buffer = ( char * ) malloc (size );
265
268
if (read_buffer == NULL ) {
266
269
ret = KAS_ERR_NO_MEMORY ;
267
270
goto out ;
@@ -386,7 +389,7 @@ kastore_read_file(kastore_t *self)
386
389
assert (size > offset );
387
390
size -= offset ;
388
391
389
- self -> read_buffer = malloc (size );
392
+ self -> read_buffer = ( char * ) malloc (size );
390
393
if (self -> read_buffer == NULL ) {
391
394
ret = KAS_ERR_NO_MEMORY ;
392
395
goto out ;
@@ -480,7 +483,7 @@ kastore_read(kastore_t *self)
480
483
goto out ;
481
484
}
482
485
if (self -> num_items > 0 ) {
483
- self -> items = calloc (self -> num_items , sizeof (* self -> items ));
486
+ self -> items = ( kaitem_t * ) calloc (self -> num_items , sizeof (* self -> items ));
484
487
if (self -> items == NULL ) {
485
488
ret = KAS_ERR_NO_MEMORY ;
486
489
goto out ;
@@ -559,6 +562,7 @@ kastore_open(kastore_t *self, const char *filename, const char *mode, int flags)
559
562
tmp .file = NULL ;
560
563
if (err != 0 ) {
561
564
ret = KAS_ERR_IO ;
565
+ goto out ;
562
566
}
563
567
}
564
568
file = fopen (filename , file_mode );
@@ -690,7 +694,7 @@ kastore_get(kastore_t *self, const char *key, size_t key_len, void **array,
690
694
int ret = KAS_ERR_KEY_NOT_FOUND ;
691
695
kaitem_t search ;
692
696
kaitem_t * item ;
693
- search .key = malloc (key_len );
697
+ search .key = ( char * ) malloc (key_len );
694
698
search .key_len = key_len ;
695
699
696
700
if (self -> mode != KAS_READ ) {
@@ -733,7 +737,7 @@ static int KAS_WARN_UNUSED
733
737
kastore_gets_type (
734
738
kastore_t * self , const char * key , void * * array , size_t * array_len , int type )
735
739
{
736
- int loaded_type ;
740
+ int loaded_type = -1 ;
737
741
int ret ;
738
742
739
743
ret = kastore_get (self , key , strlen (key ), array , array_len , & loaded_type );
@@ -847,7 +851,7 @@ kastore_oput(kastore_t *self, const char *key, size_t key_len, void *array,
847
851
{
848
852
int ret = 0 ;
849
853
kaitem_t * new_item ;
850
- void * p ;
854
+ kaitem_t * p ;
851
855
size_t j ;
852
856
853
857
if (self -> mode != KAS_WRITE ) {
@@ -864,7 +868,7 @@ kastore_oput(kastore_t *self, const char *key, size_t key_len, void *array,
864
868
}
865
869
/* This isn't terribly efficient, but we're not expecting large
866
870
* numbers of items. */
867
- p = realloc (self -> items , (self -> num_items + 1 ) * sizeof (* self -> items ));
871
+ p = ( kaitem_t * ) realloc (self -> items , (self -> num_items + 1 ) * sizeof (* self -> items ));
868
872
if (p == NULL ) {
869
873
ret = KAS_ERR_NO_MEMORY ;
870
874
goto out ;
@@ -877,7 +881,7 @@ kastore_oput(kastore_t *self, const char *key, size_t key_len, void *array,
877
881
new_item -> key_len = key_len ;
878
882
new_item -> array_len = array_len ;
879
883
new_item -> array = array ;
880
- new_item -> key = malloc (key_len );
884
+ new_item -> key = ( char * ) malloc (key_len );
881
885
if (new_item -> key == NULL ) {
882
886
kas_safe_free (new_item -> key );
883
887
ret = KAS_ERR_NO_MEMORY ;
0 commit comments