+ p_module->p_config[i].ppsz_list =
+ malloc( (p_orig[i].i_list + 1) * sizeof(char *) );
+ if( p_module->p_config[i].ppsz_list )
+ {
+ for( j = 0; j < p_orig[i].i_list; j++ )
+ p_module->p_config[i].ppsz_list[j] = p_orig[i].ppsz_list[j] ?
+ strdup( p_orig[i].ppsz_list[j] ) : NULL ;
+ p_module->p_config[i].ppsz_list[j] = NULL;
+ }
+ }
+ if( p_orig[i].ppsz_list_text )
+ {
+ p_module->p_config[i].ppsz_list_text =
+ malloc( (p_orig[i].i_list + 1) * sizeof(char *) );
+ if( p_module->p_config[i].ppsz_list_text )
+ {
+ for( j = 0; j < p_orig[i].i_list; j++ )
+ p_module->p_config[i].ppsz_list_text[j] = _(p_orig[i].ppsz_list_text[j]) ?
+ strdup( _(p_orig[i].ppsz_list_text[j] ) ) : NULL ;
+ p_module->p_config[i].ppsz_list_text[j] = NULL;
+ }
+ }
+ if( p_orig[i].pi_list )
+ {
+ p_module->p_config[i].pi_list =
+ malloc( (p_orig[i].i_list + 1) * sizeof(int) );
+ if( p_module->p_config[i].pi_list )
+ {
+ for( j = 0; j < p_orig[i].i_list; j++ )
+ p_module->p_config[i].pi_list[j] =
+ p_orig[i].pi_list[j];
+ }
+ }
+ }
+
+ /* duplicate the actions list */
+ if( p_orig[i].i_action )
+ {
+ int j;
+
+ p_module->p_config[i].ppf_action =
+ malloc( p_orig[i].i_action * sizeof(void *) );
+ p_module->p_config[i].ppsz_action_text =
+ malloc( p_orig[i].i_action * sizeof(char *) );
+
+ for( j = 0; j < p_orig[i].i_action; j++ )
+ {
+ p_module->p_config[i].ppf_action[j] =
+ p_orig[i].ppf_action[j];
+ p_module->p_config[i].ppsz_action_text[j] =
+ p_orig[i].ppsz_action_text[j] ?
+ strdup( p_orig[i].ppsz_action_text[j] ) : NULL;