Bug in RINT_Rint.cxx

From: ZVYAGIN (ZVYAGIN@mx.ihep.su)
Date: Wed Nov 10 1999 - 06:44:30 MET


Dear ROOT developers,

TRint class has bugs related to variable fDefaultPrompt:

----------------------------------------------------------------------

OLD: fDefaultPrompt = "root [%d] ";      // Bad string allocation.
NEW: fDefaultPrompt = StrDup("root [%d] ")

OLD: TRint::~TRint() {}
NEW: TRint::~TRint() { delete [] fDefaultPrompt;}

----------------------------------------------------------------------

Simple copy fDefaultPrompt=newPrompt is extremly dangerous thing. It must 
be void.

const char *TRint::SetPrompt(const char *newPrompt)
{
//  ....
   if (strlen(newPrompt) <= 55)
   {
      delete [] fDefaultPrompt;
      fDefaultPrompt = StrDup(newPrompt);
   }
   else
      Error("SetPrompt", "newPrompt too long (> 55 characters)");

//   return op;
  return fDefaultPrompt;      // Return new prompt.
}

-------------------------------------------------------------

With best wishes,
Alexander



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:42 MET