if( x == MAX_IMCHISTORY - 1 )
{
int y;
for( y = 1; y < MAX_IMCHISTORY; y++ )
{
int z = y - 1;
if( channel->history[z] != NULL )
{
IMCSTRFREE( channel->history[z] ); <—
channel->history[z] = IMCSTRALLOC( channel->history[y] );
}
}
local = localtime( &imc_time );
snprintf( buf, LGST, "~R[%-2.2d/%-2.2d %-2.2d:%-2.2d] ~G%s",
local->tm_mon + 1, local->tm_mday, local->tm_hour, local->tm_min, msg );
IMCSTRFREE( channel->history[x] );
channel->history[x] = IMCSTRALLOC( buf );
if( IMCIS_SET( channel->flags, IMCCHAN_LOG ) )
{
FILE *fp;
snprintf( buf, LGST, "%s%s.log", IMC_DIR, channel->local_name );
if( !( fp = fopen( buf, "a" ) ) )
{
perror( buf );
imcbug( "Could not open file %s!", buf );
}
else
{
fprintf( fp, "%s\n", imc_strip_colors( channel->history[x] ) );
IMCFCLOSE( fp );
}
}
}
for( y = 1; y < MAX_IMCHISTORY; y++ )
{
int z = y - 1;
if( channel->history[z] != NULL )
{
IMCSTRFREE( channel->history[z] ); <—
channel->history[z] = IMCSTRALLOC( channel->history[y] );
}
}
#define IMCCREATE(result, type, number) \
do \
{ \
if (!((result) = (type *) calloc ((number), sizeof(type)))) \
{ \
imclog( "Malloc failure @ %s:%d\n", __FILE__, __LINE__ ); \
abort(); \
} \
} while(0)
#define IMCRECREATE(result, type, number) \
do \
{ \
if(!((result) = (type *)realloc((result), sizeof(type) * (number)))) \
{ \
imclog( "Realloc failure @ %s:%d\n", __FILE__, __LINE__ ); \
abort(); \
} \
} while(0)
#define IMCDISPOSE(point) \
do \
{ \
if((point)) \
{ \
free((point)); \
(point) = NULL; \
} \
} while(0)
#define IMCSTRALLOC strdup
#define IMCSTRFREE IMCDISPOSE
for( y = 1; y < MAX_IMCHISTORY - 1 ; y++ )
{
int z = y - 1;
if( channel->history[z] != NULL )
{
IMCSTRFREE( channel->history[z] );
channel->history[z] = IMCSTRALLOC( channel->history[y] );
}
}
int y = 1;
if( channel->history[0] )
IMCSTRFREE( channel->history[0] );
for( ; y < MAX_IMCHISTORY; y++ )
channel->history[y-1] = channel->history[y];
1780 IMCSTRFREE( channel->history[z] );
(gdb) list
1775 {
1776 int z = y - 1;
1777
1778 if( channel->history[z] != NULL )
1779 {
1780 IMCSTRFREE( channel->history[z] );
1781 channel->history[z] = IMCSTRALLOC( channel->history[y] );
1782 }
1783 }
1784
(gdb) print z
$1 = 0
(gdb) Quit
(gdb) print y
$2 = 1
(gdb)