MAINT-4009: Cleaning up the error callstacks memory before app quit.
parent
b31bfdba37
commit
37d620463b
|
|
@ -1357,15 +1357,9 @@ namespace LLError
|
|||
#endif
|
||||
|
||||
//static
|
||||
void LLCallStacks::push(const char* function, const int line)
|
||||
void LLCallStacks::allocateStackBuffer()
|
||||
{
|
||||
CallStacksLogLock lock;
|
||||
if (!lock.ok())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!sBuffer)
|
||||
if(sBuffer == NULL)
|
||||
{
|
||||
sBuffer = new char*[512] ;
|
||||
sBuffer[0] = new char[512 * 128] ;
|
||||
|
|
@ -1375,6 +1369,31 @@ namespace LLError
|
|||
}
|
||||
sIndex = 0 ;
|
||||
}
|
||||
}
|
||||
|
||||
void LLCallStacks::freeStackBuffer()
|
||||
{
|
||||
if(sBuffer != NULL)
|
||||
{
|
||||
delete [] sBuffer[0] ;
|
||||
delete [] sBuffer ;
|
||||
sBuffer = NULL ;
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
void LLCallStacks::push(const char* function, const int line)
|
||||
{
|
||||
CallStacksLogLock lock;
|
||||
if (!lock.ok())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(sBuffer == NULL)
|
||||
{
|
||||
allocateStackBuffer();
|
||||
}
|
||||
|
||||
if(sIndex > 511)
|
||||
{
|
||||
|
|
@ -1406,15 +1425,9 @@ namespace LLError
|
|||
return;
|
||||
}
|
||||
|
||||
if(!sBuffer)
|
||||
if(sBuffer == NULL)
|
||||
{
|
||||
sBuffer = new char*[512] ;
|
||||
sBuffer[0] = new char[512 * 128] ;
|
||||
for(S32 i = 1 ; i < 512 ; i++)
|
||||
{
|
||||
sBuffer[i] = sBuffer[i-1] + 128 ;
|
||||
}
|
||||
sIndex = 0 ;
|
||||
allocateStackBuffer();
|
||||
}
|
||||
|
||||
if(sIndex > 511)
|
||||
|
|
@ -1445,11 +1458,9 @@ namespace LLError
|
|||
LL_INFOS() << " *************** END OF LL CALL STACKS *************** " << LL_ENDL;
|
||||
}
|
||||
|
||||
if(sBuffer)
|
||||
if(sBuffer != NULL)
|
||||
{
|
||||
delete[] sBuffer[0] ;
|
||||
delete[] sBuffer ;
|
||||
sBuffer = NULL ;
|
||||
freeStackBuffer();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1459,5 +1470,10 @@ namespace LLError
|
|||
sIndex = 0 ;
|
||||
}
|
||||
|
||||
//static
|
||||
void LLCallStacks::cleanup()
|
||||
{
|
||||
freeStackBuffer();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -261,6 +261,9 @@ namespace LLError
|
|||
private:
|
||||
static char** sBuffer ;
|
||||
static S32 sIndex ;
|
||||
|
||||
static void allocateStackBuffer();
|
||||
static void freeStackBuffer();
|
||||
|
||||
public:
|
||||
static void push(const char* function, const int line) ;
|
||||
|
|
@ -268,6 +271,7 @@ namespace LLError
|
|||
static void print() ;
|
||||
static void clear() ;
|
||||
static void end(std::ostringstream* _out) ;
|
||||
static void cleanup();
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2117,6 +2117,8 @@ bool LLAppViewer::cleanup()
|
|||
|
||||
ll_close_fail_log();
|
||||
|
||||
LLError::LLCallStacks::cleanup();
|
||||
|
||||
removeMarkerFiles();
|
||||
|
||||
LL_INFOS() << "Goodbye!" << LL_ENDL;
|
||||
|
|
|
|||
Loading…
Reference in New Issue