From d54c4301f6f70d7407807dfb6fed4b96648886d9 Mon Sep 17 00:00:00 2001 From: Rene Brun <Rene.Brun@cern.ch> Date: Sat, 9 Dec 2000 16:01:50 +0000 Subject: [PATCH] The static buffer of length 4096 is now created with a length of 2048. If necessary it is increased. git-svn-id: http://root.cern.ch/svn/root/trunk@1147 27541ba8-7e3a-0410-8455-c3a389f83636 --- base/src/TString.cxx | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/base/src/TString.cxx b/base/src/TString.cxx index 4be08a272ea..41b181f1cf9 100644 --- a/base/src/TString.cxx +++ b/base/src/TString.cxx @@ -1,4 +1,4 @@ -// @(#)root/base:$Name: $:$Id: TString.cxx,v 1.5 2000/11/27 12:23:15 brun Exp $ +// @(#)root/base:$Name: $:$Id: TString.cxx,v 1.6 2000/12/08 07:56:39 brun Exp $ // Author: Fons Rademakers 04/08/95 /************************************************************************* @@ -1176,13 +1176,10 @@ Bool_t TString::EndsWith(const char* s, ECaseCompare cmp) const //---- Global String Handling Functions ---------------------------------------- -static const int cb_size = 4096; -static const int fld_size = 2048; // a circular formating buffer -static char formbuf[cb_size]; // some slob for form overflow -static char *bfree = formbuf; -static char *endbuf = &formbuf[cb_size-1]; +static char *bfree = 0; +static int cb_size = 2048; //______________________________________________________________________________ static char *Format(const char* format, va_list ap) @@ -1190,6 +1187,14 @@ static char *Format(const char* format, va_list ap) // Format a string in a circular formatting buffer (using a printf style // format descriptor). + static int fld_size; + static char *formbuf, *endbuf; + if (bfree == 0) { + fld_size = cb_size/2; + formbuf = new char[cb_size]; + bfree = formbuf; + endbuf = &formbuf[cb_size-1]; + } char *buf = bfree; if (buf+fld_size > endbuf) @@ -1198,8 +1203,14 @@ static char *Format(const char* format, va_list ap) vsprintf(buf, format, ap); int l = strlen(buf); if (l > fld_size) { - buf[50] = 0; - Error("Format", "Buffer overflow : buf = %s...\n", buf); + delete [] formbuf; + cb_size += l; + fld_size = cb_size/2; + formbuf = new char[cb_size]; + bfree = formbuf; + endbuf = &formbuf[cb_size-1]; + buf = bfree; + vsprintf(buf, format, ap); } bfree = buf+l+1; return buf; -- GitLab