From: Aykut KOÇAK (aykutkocak@superonline.com)
Date: Mon 20 Jun 2005 - 16:20:50 EEST
Herkese Merhaba
Birkaç gündür aşağıda verdiğim satırlar ile uğraşıyorum. Bir türlü işin
içinden çıkamadım.
fonksiyonun sonundaki "g_key_file_free( key_file );" fonksiyonu iki
adres için "free(): Invalid pointer xxx" mesajı veriyor. Programda bu
yüzden oluştuğunu zannettiğim bir stabilite sorunu var. Bu modülü tüm
kod içinde iptal ettiğimde hiç bir sorun kalmıyor. Ayrıca aynı kod diğer
modüllerde aynı şekilde kullanılıyor ve hiç bir problem çıkartmıyor.
Herhalde sorunu ben göremiyorum. Glib kütüpanesi kullananlardan yardım
bekliyorum. Umarım birilerinin böyle bir deneyimi vardır.
Yardımlarınız için şimdiden teşekkürler.
Aykut KOÇAK
kod parçası:
______________________________
int logger_init( const char* filename )
{
GKeyFile *key_file;
static GError *err=NULL;
int sta;
char* key;
key_file = g_key_file_new();
sta = g_key_file_load_from_file( key_file, filename,
G_KEY_FILE_NONE, NULL );
if ( sta == TRUE )
{
if ( g_key_file_has_group ( key_file, "LOGGER") == TRUE )
{
if ( ( key = g_key_file_get_string( key_file, "LOGGER",
"LoggerFolder", &err) ) != NULL )
{
strncpy( LoggerFolder, key, 256 );
}
else
{
strcpy( LoggerFolder, "/usr/local/clown/logger" );
fprintf( stderr, "ERROR: %s\n", err->message );
}
if ( ( key = g_key_file_get_string( key_file, "LOGGER",
"LoggerFileFormat", &err) ) != NULL )
{
strncpy( LoggerFileFormat, key, 256 );
}
else
{
strcpy( LoggerFileFormat, "CLOWN" ); //
fprintf( stderr, "ERROR: %s\n", err->message );
}
if ( ( key = g_key_file_get_value( key_file, "LOGGER",
"LoggerPeriod", &err) ) != NULL )
{
LoggerPeriod = atol( key );
}
else
{
LoggerPeriod = 1000;
fprintf( stderr, "ERROR: %s\n", err->message );
}
if ( ( key = g_key_file_get_value( key_file, "LOGGER",
"LoggerSize", &err) ) != NULL )
{
LoggerSize = atol( key );
}
else
{
LoggerSize = DEFAULT_LOGGER_SIZE;
fprintf( stderr, "ERROR: %s\n", err->message );
}
}
logger_thread_unlock(); //init
fprintf( stderr," Starting Logger Thread\n\n " );
pthread_create( &logger_thread, NULL, (void
*)logger_thread_call, logger );
}
g_key_file_free( key_file );
return sta;
}
Okunan INI dosyası:
______________________
[LOGGER]
LoggerPeriod=5000
LoggerSize=1024
LoggerFileFormat=CLOWN
LoggerFolder=/usr/local/clown/logger
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama