Submitted by: Jeremy Shapiro <jnshapir@us.ibm.com>
Reviewed by: steve@openssl.org Improve efficientcy of mem_gets().
This commit is contained in:
parent
b7650eb21e
commit
4fcf8d8b07
4
CHANGES
4
CHANGES
@ -4,6 +4,10 @@
|
||||
|
||||
Changes between 0.9.8j and 0.9.8k [xx XXX xxxx]
|
||||
|
||||
*) Improve efficiency of mem_gets: don't search whole buffer each time
|
||||
for a '\n'
|
||||
[Jeremy Shapiro <jnshapir@us.ibm.com>]
|
||||
|
||||
*) New -hex option for openssl rand.
|
||||
[Matthieu Herrb]
|
||||
|
||||
|
@ -284,6 +284,7 @@ static int mem_gets(BIO *bp, char *buf, int size)
|
||||
|
||||
BIO_clear_retry_flags(bp);
|
||||
j=bm->length;
|
||||
if ((size-1) < j) j=size-1;
|
||||
if (j <= 0)
|
||||
{
|
||||
*buf='\0';
|
||||
@ -292,17 +293,18 @@ static int mem_gets(BIO *bp, char *buf, int size)
|
||||
p=bm->data;
|
||||
for (i=0; i<j; i++)
|
||||
{
|
||||
if (p[i] == '\n') break;
|
||||
if (p[i] == '\n')
|
||||
{
|
||||
i++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == j)
|
||||
{
|
||||
BIO_set_retry_read(bp);
|
||||
/* return(-1); change the semantics 0.6.6a */
|
||||
}
|
||||
else
|
||||
i++;
|
||||
/* i is the max to copy */
|
||||
if ((size-1) < i) i=size-1;
|
||||
|
||||
/*
|
||||
* i is now the max num of bytes to copy, either j or up to
|
||||
* and including the first newline
|
||||
*/
|
||||
|
||||
i=mem_read(bp,buf,i);
|
||||
if (i > 0) buf[i]='\0';
|
||||
ret=i;
|
||||
|
Loading…
x
Reference in New Issue
Block a user