Ver código fonte

add write error detection in node_compile()

devsaurus 8 anos atrás
pai
commit
d0e6ab38df
1 arquivos alterados com 7 adições e 1 exclusões
  1. 7 1
      app/modules/node.c

+ 7 - 1
app/modules/node.c

@@ -382,7 +382,10 @@ static int node_compile( lua_State* L )
   int result = luaU_dump(L, f, writer, &file_fd, stripping);
   lua_unlock(L);
 
-  fs_flush(file_fd);
+  if (fs_flush(file_fd) < 0) {   // result codes aren't propagated by flash_fs.h
+    // overwrite Lua error, like writer() does in case of a file io error
+    result = 1;
+  }
   fs_close(file_fd);
   file_fd = FS_OPEN_OK - 1;
 
@@ -392,6 +395,9 @@ static int node_compile( lua_State* L )
   if (result == LUA_ERR_CC_NOTINTEGER) {
     return luaL_error(L, "target lua_Number is integral but fractional value found");
   }
+  if (result == 1) {    // result status generated by writer() or fs_flush() fail
+    return luaL_error(L, "writing to file failed");
+  }
 
   return 0;
 }