99
1010/* Private flag used to indicate when we have opened the file ourselves
1111 * 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)
1316
1417const char *
1518kas_strerror (int err )
@@ -261,7 +264,7 @@ kastore_read_descriptors(kastore_t *self)
261264 if (size + KAS_HEADER_SIZE > self -> file_size ) {
262265 goto out ;
263266 }
264- read_buffer = malloc (size );
267+ read_buffer = ( char * ) malloc (size );
265268 if (read_buffer == NULL ) {
266269 ret = KAS_ERR_NO_MEMORY ;
267270 goto out ;
@@ -386,7 +389,7 @@ kastore_read_file(kastore_t *self)
386389 assert (size > offset );
387390 size -= offset ;
388391
389- self -> read_buffer = malloc (size );
392+ self -> read_buffer = ( char * ) malloc (size );
390393 if (self -> read_buffer == NULL ) {
391394 ret = KAS_ERR_NO_MEMORY ;
392395 goto out ;
@@ -480,7 +483,7 @@ kastore_read(kastore_t *self)
480483 goto out ;
481484 }
482485 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 ));
484487 if (self -> items == NULL ) {
485488 ret = KAS_ERR_NO_MEMORY ;
486489 goto out ;
@@ -559,6 +562,7 @@ kastore_open(kastore_t *self, const char *filename, const char *mode, int flags)
559562 tmp .file = NULL ;
560563 if (err != 0 ) {
561564 ret = KAS_ERR_IO ;
565+ goto out ;
562566 }
563567 }
564568 file = fopen (filename , file_mode );
@@ -690,7 +694,7 @@ kastore_get(kastore_t *self, const char *key, size_t key_len, void **array,
690694 int ret = KAS_ERR_KEY_NOT_FOUND ;
691695 kaitem_t search ;
692696 kaitem_t * item ;
693- search .key = malloc (key_len );
697+ search .key = ( char * ) malloc (key_len );
694698 search .key_len = key_len ;
695699
696700 if (self -> mode != KAS_READ ) {
@@ -733,7 +737,7 @@ static int KAS_WARN_UNUSED
733737kastore_gets_type (
734738 kastore_t * self , const char * key , void * * array , size_t * array_len , int type )
735739{
736- int loaded_type ;
740+ int loaded_type = -1 ;
737741 int ret ;
738742
739743 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,
847851{
848852 int ret = 0 ;
849853 kaitem_t * new_item ;
850- void * p ;
854+ kaitem_t * p ;
851855 size_t j ;
852856
853857 if (self -> mode != KAS_WRITE ) {
@@ -864,7 +868,7 @@ kastore_oput(kastore_t *self, const char *key, size_t key_len, void *array,
864868 }
865869 /* This isn't terribly efficient, but we're not expecting large
866870 * 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 ));
868872 if (p == NULL ) {
869873 ret = KAS_ERR_NO_MEMORY ;
870874 goto out ;
@@ -877,7 +881,7 @@ kastore_oput(kastore_t *self, const char *key, size_t key_len, void *array,
877881 new_item -> key_len = key_len ;
878882 new_item -> array_len = array_len ;
879883 new_item -> array = array ;
880- new_item -> key = malloc (key_len );
884+ new_item -> key = ( char * ) malloc (key_len );
881885 if (new_item -> key == NULL ) {
882886 kas_safe_free (new_item -> key );
883887 ret = KAS_ERR_NO_MEMORY ;
0 commit comments