aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2009-11-14 09:51:26 -0800
committerWayne Davison <wayned@samba.org>2009-11-14 09:51:26 -0800
commitb82d8c9d1ae9d7c97da149d5366b61da972a091c (patch)
tree79756deffef045badf51a5796fdf7198eccf9f31 /io.c
parent75ea8459043e6df7a6c652baa9216f946c4087b8 (diff)
downloadandroid_external_rsync-b82d8c9d1ae9d7c97da149d5366b61da972a091c.tar.gz
android_external_rsync-b82d8c9d1ae9d7c97da149d5366b61da972a091c.tar.bz2
android_external_rsync-b82d8c9d1ae9d7c97da149d5366b61da972a091c.zip
Tweaked sizing checks in perform_io().
Diffstat (limited to 'io.c')
-rw-r--r--io.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/io.c b/io.c
index 7cc4d62a..b27e434d 100644
--- a/io.c
+++ b/io.c
@@ -541,8 +541,8 @@ static char *perform_io(size_t needed, int flags)
if (DEBUG_GTE(IO, 3)) {
rprintf(FINFO, "[%s] perform_io(%ld, outroom) needs to flush %ld\n",
who_am_i(), (long)needed,
- iobuf.out.len > iobuf.out.size - needed
- ? (long)iobuf.out.len - (iobuf.out.size - needed) : 0L);
+ iobuf.out.len + needed > iobuf.out.size
+ ? (long)(iobuf.out.len + needed - iobuf.out.size) : 0L);
}
break;
@@ -557,8 +557,8 @@ static char *perform_io(size_t needed, int flags)
if (DEBUG_GTE(IO, 3)) {
rprintf(FINFO, "[%s] perform_io(%ld, msgroom) needs to flush %ld\n",
who_am_i(), (long)needed,
- iobuf.out.len > iobuf.msg.size - needed
- ? (long)iobuf.out.len - (iobuf.msg.size - needed) : 0L);
+ iobuf.msg.len + needed > iobuf.msg.size
+ ? (long)(iobuf.msg.len + needed - iobuf.msg.size) : 0L);
}
break;
@@ -578,11 +578,13 @@ static char *perform_io(size_t needed, int flags)
goto double_break;
break;
case PIO_NEED_OUTROOM:
- if (iobuf.out.len <= iobuf.out.size - needed)
+ /* Note that iobuf.out_empty_len doesn't factor into this check
+ * because iobuf.out.len already holds any needed header len. */
+ if (iobuf.out.len + needed <= iobuf.out.size)
goto double_break;
break;
case PIO_NEED_MSGROOM:
- if (iobuf.msg.len <= iobuf.msg.size - needed)
+ if (iobuf.msg.len + needed <= iobuf.msg.size)
goto double_break;
break;
}