Просмотр исходного кода

fix: sfud挂载lfs文件系统后,如果使用追加模式打开文件,并写入文件,会触发死机,在ec618平台可复现

当前的判断是底层sdk加了额外的断言,原生lfs没有这个限制

解决办法是额外添加一个WRITE属性flags,使其能写入数据
Wendal Chen 2 лет назад
Родитель
Сommit
c1bd42b50f
1 измененных файлов с 2 добавлено и 2 удалено
  1. 2 2
      luat/vfs/luat_fs_lfs2.c

+ 2 - 2
luat/vfs/luat_fs_lfs2.c

@@ -37,7 +37,7 @@ FILE* luat_vfs_lfs2_fopen(void* userdata, const char *filename, const char *mode
         flag = LFS_O_RDWR | LFS_O_CREAT | LFS_O_TRUNC;
     }
     else if(!strcmp("a+", mode) || !strcmp("a+b", mode) || !strcmp("ab+", mode)) {
-        flag = LFS_O_APPEND | LFS_O_CREAT;
+        flag = LFS_O_APPEND | LFS_O_CREAT | LFS_O_WRONLY;
     }
     else if(!strcmp("w", mode) || !strcmp("wb", mode)) {
         flag = LFS_O_RDWR | LFS_O_CREAT | LFS_O_TRUNC;
@@ -46,7 +46,7 @@ FILE* luat_vfs_lfs2_fopen(void* userdata, const char *filename, const char *mode
         flag = LFS_O_RDONLY;
     }
     else if(!strcmp("a", mode) || !strcmp("ab", mode)) {
-        flag = LFS_O_APPEND | LFS_O_CREAT;
+        flag = LFS_O_APPEND | LFS_O_CREAT | LFS_O_WRONLY;
     }
     else {
         LLOGW("bad file open mode %s, fallback to 'r'", mode);