From Jérôme Duval <jerome.duval@xxxxxxxxx>:
Jérôme Duval has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/3383 ;)
Change subject: kernel/fs: fix previous commit logic
......................................................................
kernel/fs: fix previous commit logic
fix #16598
---
M src/system/kernel/fs/fd.cpp
1 file changed, 11 insertions(+), 12 deletions(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/83/3383/1
diff --git a/src/system/kernel/fs/fd.cpp b/src/system/kernel/fs/fd.cpp
index ac94ff7..a15b3b6 100644
--- a/src/system/kernel/fs/fd.cpp
+++ b/src/system/kernel/fs/fd.cpp
@@ -748,7 +748,7 @@
}
bool movePosition = false;
- if (pos == -1 && (!write || (descriptor->open_mode & O_APPEND) == 0)) {
+ if (pos == -1) {
pos = descriptor->pos;
movePosition = true;
}
@@ -768,10 +768,10 @@
if (status != B_OK)
return status;
- if (movePosition)
- descriptor->pos = pos + length;
- else if (pos == -1)
- descriptor->pos = descriptor->ops->fd_seek(descriptor, 0,
SEEK_END);
+ if (movePosition) {
+ descriptor->pos = write && (descriptor->open_mode & O_APPEND)
!= 0
+ ? descriptor->ops->fd_seek(descriptor, 0, SEEK_END) :
pos + length;
+ }
return length <= SSIZE_MAX ? (ssize_t)length : SSIZE_MAX;
}
@@ -810,7 +810,7 @@
return B_BAD_ADDRESS;
bool movePosition = false;
- if (pos == -1 && (!write || (descriptor->open_mode & O_APPEND) == 0)) {
+ if (pos == -1) {
pos = descriptor->pos;
movePosition = true;
}
@@ -854,17 +854,16 @@
else
bytesTransferred += (ssize_t)length;
- if (pos > -1)
- pos += length;
+ pos += length;
if (length < vecs[i].iov_len)
break;
}
- if (movePosition)
- descriptor->pos = pos;
- else if (pos == -1)
- descriptor->pos = descriptor->ops->fd_seek(descriptor, 0,
SEEK_END);
+ if (movePosition) {
+ descriptor->pos = write && (descriptor->open_mode & O_APPEND)
!= 0
+ ? descriptor->ops->fd_seek(descriptor, 0, SEEK_END) :
pos;
+ }
return bytesTransferred;
}
--
To view, visit https://review.haiku-os.org/c/haiku/+/3383
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: Ie34c1563bd34dbe9c6cda92e41a2d5a96d20c3b1
Gerrit-Change-Number: 3383
Gerrit-PatchSet: 1
Gerrit-Owner: Jérôme Duval <jerome.duval@xxxxxxxxx>
Gerrit-MessageType: newchange