rem: new_report -> report_name = g_strdup ( report -> report_name );
add: if( report -> report_name ) new_report -> report_name = g_strdup ( report -> report_name );
context: gint gsb_data_report_dup ( gint report_number ){    gint new_report_number;    struct_report *report;    struct_report *new_report;    GSList *list_tmp;    new_report_number = gsb_data_report_new ( NULL );    report = gsb_data_report_get_report_by_no (report_number);    if ( !report )	return 0;    new_report = gsb_data_report_get_report_by_no (new_report_number);    if ( !new_report )	return 0;    memcpy ( new_report,	     report,	     sizeof ( struct_report ));    /* we had to duplicate the strings, dates and lists */    new_report -> report_name = g_strdup ( report -> report_name );    new_report -> financial_year_list = g_slist_copy ( report -> financial_year_list );    new_report -> sorting_type = g_slist_copy ( report -> sorting_type );    new_report -> account_numbers = g_slist_copy ( report -> account_numbers );    new_report -> transfer_account_numbers = g_slist_copy ( report -> transfer_account_numbers );    new_report -> category_numbers = g_slist_copy ( report -> category_numbers );    new_report -> budget_numbers = g_slist_copy ( report -> budget_numbers );    new_report -> payee_numbers = g_slist_copy ( report -> payee_numbers );    new_report -> method_of_payment_list = g_slist_copy ( report -> method_of_payment_list );    new_report -> personal_date_start = gsb_date_copy ( report -> personal_date_start );    new_report -> personal_date_end = gsb_date_copy ( report -> personal_date_end );    list_tmp = report -> text_comparison_list;    new_report -> text_comparison_list = NULL;    while ( list_tmp )    {	gint text_comparison_number;	text_comparison_number = gsb_data_report_text_comparison_dup ( GPOINTER_TO_INT (list_tmp -> data));	gsb_data_report_text_comparison_set_report_number ( text_comparison_number,							    new_report_number );	new_report -> text_comparison_list = g_slist_append ( new_report -> text_comparison_list,							      GINT_TO_POINTER (text_comparison_number));	list_tmp = list_tmp -> next;    }    list_tmp = report -> amount_comparison_list;    new_report -> amount_comparison_list = NULL;    while ( list_tmp )    {	gint amount_comparison_number;	amount_comparison_number = gsb_data_report_amount_comparison_dup ( GPOINTER_TO_INT (list_tmp -> data));	gsb_data_report_amount_comparison_set_report_number ( amount_comparison_number,							      new_report_number );	new_report -> amount_comparison_list = g_slist_append ( new_report -> amount_comparison_list,								GINT_TO_POINTER (amount_comparison_number));	list_tmp = list_tmp -> next;    }    return new_report_number;}