diff --git a/components/dfs/filesystems/cromfs/dfs_cromfs.c b/components/dfs/filesystems/cromfs/dfs_cromfs.c index 099d5a31dacc76ebbafed2916f0388a462030fe1..8584779826186c06139ab6190904d043776672e1 100644 --- a/components/dfs/filesystems/cromfs/dfs_cromfs.c +++ b/components/dfs/filesystems/cromfs/dfs_cromfs.c @@ -341,7 +341,7 @@ static uint32_t cromfs_blk_read_bytes(cromfs_info *ci, uint32_t pos, void *buf, start_blk++; if (sector_nr) { - ret_len = rt_device_read(ci->device, start_blk, buf + off_s, sector_nr); + ret_len = rt_device_read(ci->device, start_blk, (char*)buf + off_s, sector_nr); if (ret_len != sector_nr) goto end; start_blk += sector_nr; @@ -351,7 +351,7 @@ static uint32_t cromfs_blk_read_bytes(cromfs_info *ci, uint32_t pos, void *buf, ret_len = rt_device_read(ci->device, start_blk, block_buff, 1); if (ret_len != 1) goto end; - memcpy(buf + off_s, block_buff, size); + memcpy((char*)buf + off_s, block_buff, size); } ret = size_bak; end: @@ -676,7 +676,7 @@ static int dfs_cromfs_read(struct dfs_fd *file, void *buf, size_t count) return 0; di_mem = cromfs_dirent_cache_get(ci, fi->partition_pos, fi->size); if (di_mem) - memcpy(buf, di_mem + file->pos, length); + memcpy(buf, (char*)di_mem + file->pos, length); rt_mutex_release(&ci->lock); if (!di_mem) return 0; @@ -688,7 +688,7 @@ static int dfs_cromfs_read(struct dfs_fd *file, void *buf, size_t count) return length; } -static int dfs_cromfs_lseek(struct dfs_fd *file, rt_off_t offset) +static int dfs_cromfs_lseek(struct dfs_fd *file, off_t offset) { if (offset <= file->size) { @@ -929,7 +929,10 @@ static int dfs_cromfs_getdents(struct dfs_fd *file, struct dirent *dirp, uint32_ result = rt_mutex_take(&ci->lock, RT_WAITING_FOREVER); if (result != RT_EOK) + { + free(dirent); return -EINTR; + } di_mem = cromfs_dirent_cache_get(ci, fi->partition_pos, fi->size); if (di_mem) memcpy(dirent, di_mem, fi->size);