fs/smartfs: Fix file size corruption when opening with overwriting mode
If a existing file is opened with overwriting mode e.g. fopen(file, "w+"), the file size will be incorrect after writing any data to the file. This bug is caused by previous commit 10903b5, and its changes should be limited to only O_APPEND mode.
This commit is contained in:
parent
172aaa5e5c
commit
89a79b03cf
@ -331,10 +331,11 @@ static int smartfs_open(FAR struct file *filep, const char *relpath,
|
|||||||
|
|
||||||
/* When using sector buffering, current sector with its header should
|
/* When using sector buffering, current sector with its header should
|
||||||
* always be present in sf->buffer. Otherwise data corruption may arise
|
* always be present in sf->buffer. Otherwise data corruption may arise
|
||||||
* when writing.
|
* when writing. However, this does not apply when overwriting without
|
||||||
|
* append mode.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (sf->currsector != SMARTFS_ERASEDSTATE_16BIT)
|
if ((sf->currsector != SMARTFS_ERASEDSTATE_16BIT) && (oflags & O_APPEND))
|
||||||
{
|
{
|
||||||
readwrite.logsector = sf->currsector;
|
readwrite.logsector = sf->currsector;
|
||||||
readwrite.offset = 0;
|
readwrite.offset = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user