summaryrefslogtreecommitdiff
path: root/imap/src/osdep/nt/ssl_win.c
diff options
context:
space:
mode:
Diffstat (limited to 'imap/src/osdep/nt/ssl_win.c')
-rw-r--r--imap/src/osdep/nt/ssl_win.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/imap/src/osdep/nt/ssl_win.c b/imap/src/osdep/nt/ssl_win.c
index 783c080..0e77ee3 100644
--- a/imap/src/osdep/nt/ssl_win.c
+++ b/imap/src/osdep/nt/ssl_win.c
@@ -497,24 +497,22 @@ static char *ssl_getline_work (SSLSTREAM *stream,unsigned long *size,
return ret;
}
-char* ssl_getsize(SSLSTREAM* stream, unsigned long size)
+char *ssl_getsize(SSLSTREAM* stream, unsigned long size)
{
- char* ret = NIL;
+ char *ret = NIL;
unsigned long got = 0L, need = size, n;
- int done = 0;
- while (!done) {
+ do {
if (!ssl_getdata(stream)) return ret; /* return what we have */
n = stream->ictr < need ? stream->ictr : need;
- fs_resize((void**)&ret, got + n + 1);
+ fs_resize((void **)&ret, (got + n + 1)*sizeof(char));
memcpy(ret + got, stream->iptr, n);
ret[got + n] = '\0';
got += n;
need -= n;
stream->iptr += n;
stream->ictr -= n;
- if (need == 0L) done++;
- }
+ } while (need > 0);
return ret;
}