Ver código fonte

fix: 令ferror在feof前执行

SongZihuan 3 anos atrás
pai
commit
8d44de4209
2 arquivos alterados com 2 adições e 2 exclusões
  1. 1 1
      src/core/parser.c
  2. 1 1
      src/runtime/aFunlang.c

+ 1 - 1
src/core/parser.c

@@ -118,7 +118,7 @@ static size_t readFuncFile(struct readerDataFile *data, char *dest, size_t len,
     }
 
     size_t len_r =  fread(dest, sizeof(char), len, data->file);
-    if (feof(data->file))
+    if (ferror(data->file) || feof(data->file))  // ferror在feof前执行
         *read_end = true;
     return len_r;
 }

+ 1 - 1
src/runtime/aFunlang.c

@@ -141,7 +141,7 @@ int runCodeFromFileSource(FilePath file, bool save_afb, FilePath save_path, int
  * 目标: 运行stdin的程序 (源码形式)
  */
 int runCodeFromStdin(char *name, af_Environment *env){
-    if (env == NULL || feof(stdin) || ferror(stdin) || !aFunInit_mark)
+    if (env == NULL || ferror(stdin) || feof(stdin) || !aFunInit_mark)  // ferror在feof前执行
         return -1;
 
     if (name == NULL)