forked from wolfSSL/wolfssl
handle case to avoid memcpy when staticmemory IO pool gives same buffer
This commit is contained in:
@@ -7651,6 +7651,16 @@ static WC_INLINE int GrowOutputBuffer(WOLFSSL* ssl, int size)
|
|||||||
tmp += align - hdrSz;
|
tmp += align - hdrSz;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_STATIC_MEMORY
|
||||||
|
/* can be from IO memory pool which does not need copy if same buffer */
|
||||||
|
if (ssl->buffers.outputBuffer.length &&
|
||||||
|
tmp == ssl->buffers.outputBuffer.buffer) {
|
||||||
|
ssl->buffers.outputBuffer.bufferSize =
|
||||||
|
size + ssl->buffers.outputBuffer.length;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (ssl->buffers.outputBuffer.length)
|
if (ssl->buffers.outputBuffer.length)
|
||||||
XMEMCPY(tmp, ssl->buffers.outputBuffer.buffer,
|
XMEMCPY(tmp, ssl->buffers.outputBuffer.buffer,
|
||||||
ssl->buffers.outputBuffer.length);
|
ssl->buffers.outputBuffer.length);
|
||||||
@@ -7715,6 +7725,16 @@ int GrowInputBuffer(WOLFSSL* ssl, int size, int usedLength)
|
|||||||
tmp += align - hdrSz;
|
tmp += align - hdrSz;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_STATIC_MEMORY
|
||||||
|
/* can be from IO memory pool which does not need copy if same buffer */
|
||||||
|
if (usedLength && tmp == ssl->buffers.inputBuffer.buffer) {
|
||||||
|
ssl->buffers.inputBuffer.bufferSize = size + usedLength;
|
||||||
|
ssl->buffers.inputBuffer.idx = 0;
|
||||||
|
ssl->buffers.inputBuffer.length = usedLength;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (usedLength)
|
if (usedLength)
|
||||||
XMEMCPY(tmp, ssl->buffers.inputBuffer.buffer +
|
XMEMCPY(tmp, ssl->buffers.inputBuffer.buffer +
|
||||||
ssl->buffers.inputBuffer.idx, usedLength);
|
ssl->buffers.inputBuffer.idx, usedLength);
|
||||||
|
Reference in New Issue
Block a user