aboutsummaryrefslogtreecommitdiffstats
path: root/transact.c
diff options
context:
space:
mode:
authorSunil Shetye <sunilshetye@rocketmail.com>2011-05-02 00:35:00 +0530
committerMatthias Andree <matthias.andree@gmx.de>2011-05-03 11:37:18 +0200
commit81242009035395b10cca2a23a7ba7e85cc6d3d76 (patch)
tree5f912c98abdede679be874318fcaf03ba3068ca8 /transact.c
parent72ce8bce8dd655b6aefa33d0a74e883dad5202b5 (diff)
downloadfetchmail-81242009035395b10cca2a23a7ba7e85cc6d3d76.tar.gz
fetchmail-81242009035395b10cca2a23a7ba7e85cc6d3d76.tar.bz2
fetchmail-81242009035395b10cca2a23a7ba7e85cc6d3d76.zip
Call strlen() only once when removing CRLF from a line
Diffstat (limited to 'transact.c')
-rw-r--r--transact.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/transact.c b/transact.c
index 55d25168..758e5aaf 100644
--- a/transact.c
+++ b/transact.c
@@ -1554,6 +1554,7 @@ int gen_recv(int sock /** socket to which server is connected */,
char *buf /* buffer to receive input */,
int size /* length of buffer */)
{
+ size_t n;
int oldphase = phase; /* we don't have to be re-entrant */
phase = SERVER_WAIT;
@@ -1573,10 +1574,11 @@ int gen_recv(int sock /** socket to which server is connected */,
else
{
set_timeout(0);
- if (buf[strlen(buf)-1] == '\n')
- buf[strlen(buf)-1] = '\0';
- if (buf[strlen(buf)-1] == '\r')
- buf[strlen(buf)-1] = '\0';
+ n = strlen(buf);
+ if (n > 0 && buf[n-1] == '\n')
+ buf[--n] = '\0';
+ if (n > 0 && buf[n-1] == '\r')
+ buf[--n] = '\0';
if (outlevel >= O_MONITOR)
report(stdout, "%s< %s\n", protocol->name, buf);
phase = oldphase;