소스 검색

Added asserts on positive return values from block device functions

This has been a large source of porting errors, partially due to my
fault in not having enough porting documentation, which is also
planned.

In the short term, asserts should at least help catch these types of
errors instead of just letting the filesystem collapse after recieving
an odd error code.
Christopher Haster 6 년 전
부모
커밋
52a90b8dcc
1개의 변경된 파일8개의 추가작업 그리고 2개의 파일을 삭제
  1. 8 2
      lfs.c

+ 8 - 2
lfs.c

@@ -92,6 +92,7 @@ static int lfs_bd_read(lfs_t *lfs,
                 lfs->cfg->cache_size);
         int err = lfs->cfg->read(lfs->cfg, rcache->block,
                 rcache->off, rcache->buffer, rcache->size);
+        LFS_ASSERT(err <= 0);
         if (err) {
             return err;
         }
@@ -136,6 +137,7 @@ static int lfs_bd_flush(lfs_t *lfs,
         lfs_size_t diff = lfs_alignup(pcache->size, lfs->cfg->prog_size);
         int err = lfs->cfg->prog(lfs->cfg, pcache->block,
                 pcache->off, pcache->buffer, diff);
+        LFS_ASSERT(err <= 0);
         if (err) {
             return err;
         }
@@ -170,7 +172,9 @@ static int lfs_bd_sync(lfs_t *lfs,
         return err;
     }
 
-    return lfs->cfg->sync(lfs->cfg);
+    err = lfs->cfg->sync(lfs->cfg);
+    LFS_ASSERT(err <= 0);
+    return err;
 }
 
 static int lfs_bd_prog(lfs_t *lfs,
@@ -221,7 +225,9 @@ static int lfs_bd_prog(lfs_t *lfs,
 
 static int lfs_bd_erase(lfs_t *lfs, lfs_block_t block) {
     LFS_ASSERT(block < lfs->cfg->block_count);
-    return lfs->cfg->erase(lfs->cfg, block);
+    int err = lfs->cfg->erase(lfs->cfg, block);
+    LFS_ASSERT(err <= 0);
+    return err;
 }