From 636d56b051907e5041ee501284c4a2552489ca50 Mon Sep 17 00:00:00 2001 From: Jochen Dolze Date: Tue, 17 Mar 2009 18:22:01 +0100 Subject: Removed EventTimeDiff option Found bug in readline.cpp Added unlocated events info --- readline.cpp | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) (limited to 'readline.cpp') diff --git a/readline.cpp b/readline.cpp index f13852e..50d2b2b 100644 --- a/readline.cpp +++ b/readline.cpp @@ -10,6 +10,8 @@ #include #include "readline.h" +extern char *strcatrealloc(char *dest, const char *src); + // --- cReadLineInfosatepg --------------------------------------------------- cReadLineInfosatepg::cReadLineInfosatepg(void) @@ -19,52 +21,52 @@ cReadLineInfosatepg::cReadLineInfosatepg(void) cReadLineInfosatepg::~cReadLineInfosatepg() { - free(buffer); + if (buffer) free(buffer); } char *cReadLineInfosatepg::Read(FILE *f,size_t *size) { - free(buffer); buffer=NULL; + if (buffer) free(buffer); + buffer=NULL; if ((!size) || (!f)) return NULL; bool ext=false; *size=0; + char *tempbuffer=NULL; + size_t tempsize=0; do { - char *tempbuffer=NULL; - size_t tempsize=0; - ext=false; int n = getline(&tempbuffer, &tempsize, f); if (n > 0) { if (tempbuffer[n-1] == '\n') { - n--; - tempbuffer[n] = 0; + tempbuffer[--n] = 0; if (n > 0) { if (tempbuffer[n-1] == '\r') - n--; - tempbuffer[n] = 0; + tempbuffer[--n] = 0; } } if (n>0) { if (tempbuffer[n-1] == '\\') { - n--; - tempbuffer[n]=0; + tempbuffer[--n]=0; ext=true; } } - - buffer=(char*) realloc(buffer,*size+(n+1)); - snprintf(&buffer[*size],n+1,tempbuffer); - free(tempbuffer); - *size+=n; + if (n>0) { + buffer=strcatrealloc(buffer,tempbuffer); + //tempbuffer[0]=0; + *size+=n; + } else { + //tempbuffer[0]=0; + ext=true; + } } } while (ext==true); - + if (tempbuffer) free(tempbuffer); return buffer; } -- cgit v1.2.3