Commit d0e6ab38 authored by devsaurus's avatar devsaurus
Browse files

add write error detection in node_compile()

parent 4a69d242
...@@ -382,7 +382,10 @@ static int node_compile( lua_State* L ) ...@@ -382,7 +382,10 @@ static int node_compile( lua_State* L )
int result = luaU_dump(L, f, writer, &file_fd, stripping); int result = luaU_dump(L, f, writer, &file_fd, stripping);
lua_unlock(L); 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); fs_close(file_fd);
file_fd = FS_OPEN_OK - 1; file_fd = FS_OPEN_OK - 1;
...@@ -392,6 +395,9 @@ static int node_compile( lua_State* L ) ...@@ -392,6 +395,9 @@ static int node_compile( lua_State* L )
if (result == LUA_ERR_CC_NOTINTEGER) { if (result == LUA_ERR_CC_NOTINTEGER) {
return luaL_error(L, "target lua_Number is integral but fractional value found"); 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; return 0;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment