diff options
author | Wayne Davison <wayned@samba.org> | 2009-11-14 09:51:26 -0800 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2009-11-14 09:51:26 -0800 |
commit | b82d8c9d1ae9d7c97da149d5366b61da972a091c (patch) | |
tree | 79756deffef045badf51a5796fdf7198eccf9f31 /io.c | |
parent | 75ea8459043e6df7a6c652baa9216f946c4087b8 (diff) | |
download | android_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.c | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -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; } |