ソースを参照

Added error when opening multiple files with a statically allocated buffer

Opening multiple files simultaneously is not supported without dynamic memory,
but the previous behaviour would just let the files overwrite each other, which
could lead to bad errors down the line

found by husigeza
Christopher Haster 7 年 前
コミット
c5e2b335d6
1 ファイル変更4 行追加0 行削除
  1. 4 0
      lfs.c

+ 4 - 0
lfs.c

@@ -1335,6 +1335,10 @@ int lfs_file_open(lfs_t *lfs, lfs_file_t *file,
     // allocate buffer if needed
     file->cache.block = 0xffffffff;
     if (lfs->cfg->file_buffer) {
+        if (lfs->files) {
+            // already in use
+            return LFS_ERR_NOMEM;
+        }
         file->cache.buffer = lfs->cfg->file_buffer;
     } else if ((file->flags & 3) == LFS_O_RDONLY) {
         file->cache.buffer = lfs_malloc(lfs->cfg->read_size);