diff --git a/protocol/src/main/resources/cpp/ByteBuffer.h b/protocol/src/main/resources/cpp/ByteBuffer.h index c1eae9d1..4ecd4a21 100644 --- a/protocol/src/main/resources/cpp/ByteBuffer.h +++ b/protocol/src/main/resources/cpp/ByteBuffer.h @@ -87,12 +87,17 @@ namespace zfoo { writeInt(length); setWriteOffset(currentWriteIndex); } else { - int8_t *targetPtr = (int8_t *) calloc(length, sizeof(int8_t)); - memcpy(targetPtr, &buffer[currentWriteIndex - length], length); +// int8_t *targetPtr = (int8_t *) calloc(length, sizeof(int8_t)); +// memcpy(targetPtr, &buffer[currentWriteIndex - length], length); +// setWriteOffset(beforeWriteIndex); +// writeInt(length); +// writeBytes(targetPtr, length); +// free(targetPtr); + + memmove(&buffer[beforeWriteIndex + lengthCount], &buffer[currentWriteIndex - length], length); setWriteOffset(beforeWriteIndex); writeInt(length); - writeBytes(targetPtr, length); - free(targetPtr); + setWriteOffset(beforeWriteIndex + lengthCount + length); } } diff --git a/protocol/src/test/cpp/zfoocpp/ByteBuffer.h b/protocol/src/test/cpp/zfoocpp/ByteBuffer.h index c1eae9d1..4ecd4a21 100644 --- a/protocol/src/test/cpp/zfoocpp/ByteBuffer.h +++ b/protocol/src/test/cpp/zfoocpp/ByteBuffer.h @@ -87,12 +87,17 @@ namespace zfoo { writeInt(length); setWriteOffset(currentWriteIndex); } else { - int8_t *targetPtr = (int8_t *) calloc(length, sizeof(int8_t)); - memcpy(targetPtr, &buffer[currentWriteIndex - length], length); +// int8_t *targetPtr = (int8_t *) calloc(length, sizeof(int8_t)); +// memcpy(targetPtr, &buffer[currentWriteIndex - length], length); +// setWriteOffset(beforeWriteIndex); +// writeInt(length); +// writeBytes(targetPtr, length); +// free(targetPtr); + + memmove(&buffer[beforeWriteIndex + lengthCount], &buffer[currentWriteIndex - length], length); setWriteOffset(beforeWriteIndex); writeInt(length); - writeBytes(targetPtr, length); - free(targetPtr); + setWriteOffset(beforeWriteIndex + lengthCount + length); } }