diff --git a/fs/vfs/bcache/src/bcache.c b/fs/vfs/bcache/src/bcache.c index c1e76376..4c1e0732 100644 --- a/fs/vfs/bcache/src/bcache.c +++ b/fs/vfs/bcache/src/bcache.c @@ -581,8 +581,11 @@ static OsBcacheBlock *AllocNewBlock(OsBcache *bc, BOOL read, UINT64 num) DelBlock(bc, prefer); } + if (prefer->used) { /* do not combine with next check */ + MergeSyncBlocks(bc, prefer); /* prefer->used may be changed here */ + } + if (prefer->used) { - MergeSyncBlocks(bc, prefer); BcacheSyncBlock(bc, prefer); DelBlock(bc, prefer); } diff --git a/fs/vfs/vnode.c b/fs/vfs/vnode.c index fb0ce330..41fb043f 100644 --- a/fs/vfs/vnode.c +++ b/fs/vfs/vnode.c @@ -260,7 +260,7 @@ int VnodeDrop(void) static char *NextName(char *pos, uint8_t *len) { char *name = NULL; - while (*pos == '/') { + while (*pos != 0 && *pos == '/') { pos++; } if (*pos == '\0') {