From ee7d71e66d8d472895d9f742a40ea9bb477a8f32 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Wed, 1 Nov 2017 17:10:49 -0700 Subject: [PATCH] bug fix --- src/Serialize/serializer.cc | 13 +++++++++---- src/config.h | 2 +- src/mymemory.h | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Serialize/serializer.cc b/src/Serialize/serializer.cc index 4a97074..daa8ba0 100644 --- a/src/Serialize/serializer.cc +++ b/src/Serialize/serializer.cc @@ -45,14 +45,18 @@ Serializer::~Serializer() { } void Serializer::mywrite(const void *__buf, size_t __n) { + char *towrite=(char *) __buf; if (__n > SERIALBUFFERLENGTH *2) { if (bufferoffset != 0) flushBuffer(); - ssize_t result=write(filedesc, __buf, __n); - if (result != (ssize_t) __n) - exit(-1); + while (__n > 0) { + ssize_t result=write(filedesc, &towrite, __n); + if (result != (ssize_t) __n) + exit(-1); + towrite += result; + __n -= result; + } } else { - char *towrite=(char *) __buf; do { uint spacefree = bufferlength-bufferoffset; uint datatowrite = spacefree > __n ? __n : spacefree; @@ -61,6 +65,7 @@ void Serializer::mywrite(const void *__buf, size_t __n) { if (spacefree < __n) { flushBuffer(); + __n -= datatowrite; towrite += datatowrite; } else if (spacefree == __n) { flushBuffer(); diff --git a/src/config.h b/src/config.h index e34b828..2e48668 100644 --- a/src/config.h +++ b/src/config.h @@ -19,7 +19,7 @@ //#define CONFIG_DEBUG #endif -#define SATCHECK_CONFIG +//#define SATCHECK_CONFIG #ifndef CONFIG_ASSERT #define CONFIG_ASSERT diff --git a/src/mymemory.h b/src/mymemory.h index 766e6f6..0798860 100644 --- a/src/mymemory.h +++ b/src/mymemory.h @@ -19,7 +19,7 @@ #include "config.h" -#define SATCHECK_CONFIG +//#define SATCHECK_CONFIG /* void * ourmalloc(size_t size); -- 2.34.1