From a3acf86b10d7de6c3947c39dd10b989ad88e4389 Mon Sep 17 00:00:00 2001 From: omicronrex <65692652+omicronrex@users.noreply.github.com> Date: Thu, 5 Oct 2023 12:54:44 -0300 Subject: [PATCH] fix the problem with sockets --- src/Buffer.cpp | 8 ++++++++ src/Buffer.h | 1 + src/gm_buffer.cpp | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 4106d0a..939d02e 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -428,6 +428,14 @@ std::string Buffer::ReadData(unsigned int bytes) { } void Buffer::WriteData(const char* str, unsigned int len) { + if(len != 0) { + unsigned int p = length; + SetLength(length + len); + memcpy(data + p, str, len); + } +} + +void Buffer::WriteDataGML(const char* str, unsigned int len) { if(len != 0) { if (pos + len > length) { SetLength(pos + len); diff --git a/src/Buffer.h b/src/Buffer.h index c88e125..eda2d99 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -62,6 +62,7 @@ class Buffer { void WriteString(const char* str); std::string ReadData(unsigned int bytes); void WriteData(const char* str, unsigned int len); + void WriteDataGML(const char* str, unsigned int len); std::string ReadHex(unsigned int bytes); void WriteHex(const char* str, unsigned int len); std::string ReadBase64(unsigned int bytes); diff --git a/src/gm_buffer.cpp b/src/gm_buffer.cpp index b6a1e3e..fb6a9f1 100644 --- a/src/gm_buffer.cpp +++ b/src/gm_buffer.cpp @@ -341,7 +341,7 @@ gmexport const char* buffer_read_data(double id, double len) { gmexport double buffer_write_data(double id, const char* string) { Buffer *b = gmdata.FindBuffer(gm_cast(id)); if(b == NULL) return 0; - b->WriteData(string, strlen(string)); + b->WriteDataGML(string, strlen(string)); return 1; }