--- a/coreapi/linphonecall.c 2013-05-21 15:03:38.000000000 +0200 +++ b/coreapi/linphonecall.c 2013-12-25 00:36:10.172026293 +0100 @@ -2363,21 +2363,24 @@ lc->vtable.display_status(lc,info); ms_free(info); } - lc->call_logs=ms_list_prepend(lc->call_logs,(void *)call->log); - if (ms_list_size(lc->call_logs)>lc->max_call_logs){ - MSList *elem,*prevelem=NULL; - /*find the last element*/ - for(elem=lc->call_logs;elem!=NULL;elem=elem->next){ - prevelem=elem; - } - elem=prevelem; - linphone_call_log_destroy((LinphoneCallLog*)elem->data); - lc->call_logs=ms_list_remove_link(lc->call_logs,elem); - } - if (lc->vtable.call_log_updated!=NULL){ - lc->vtable.call_log_updated(lc,call->log); + + if (lc->max_call_logs > 0) { + lc->call_logs=ms_list_prepend(lc->call_logs,(void *)call->log); + if (ms_list_size(lc->call_logs)>lc->max_call_logs){ + MSList *elem,*prevelem=NULL; + /*find the last element*/ + for(elem=lc->call_logs;elem!=NULL;elem=elem->next){ + prevelem=elem; + } + elem=prevelem; + linphone_call_log_destroy((LinphoneCallLog*)elem->data); + lc->call_logs=ms_list_remove_link(lc->call_logs,elem); + } + if (lc->vtable.call_log_updated!=NULL){ + lc->vtable.call_log_updated(lc,call->log); + } + call_logs_write_to_config_file(lc); } - call_logs_write_to_config_file(lc); } LinphoneCallState linphone_call_get_transfer_state(LinphoneCall *call) {