Skip to content

Commit 8d73103

Browse files
committed
Fix the option -A, --all-fields, it was not working properly and could lead to a segfault. Resolves #2473
1 parent 5096c7c commit 8d73103

File tree

4 files changed

+23
-4
lines changed

4 files changed

+23
-4
lines changed

NEWS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ Changes affecting specific commands:
5858
- Add options `--samples-list` and `--samples-file` to allow renaming samples from a list of
5959
samples on command line, rather than from a file of sample names (#2383)
6060

61+
* bcftools +split-vep
62+
63+
- Fix the option `-A, --all-fields`, it was not working properly and could lead to a segfault (#2473)
64+
6165

6266
## Release 1.22 (30th May 2025)
6367

plugins/split-vep.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,6 +1037,7 @@ static void init_data(args_t *args)
10371037
}
10381038
static void destroy_data(args_t *args)
10391039
{
1040+
free(args->all_fields_delim);
10401041
free(args->list_tr);
10411042
if ( args->tr_expr.regex ) regfree(args->tr_expr.regex);
10421043
free(args->tr_expr.regex);
@@ -1553,7 +1554,7 @@ int run(int argc, char **argv)
15531554
{
15541555
{"drop-sites",no_argument,0,'x'},
15551556
{"keep-sites",no_argument,0,'X'},
1556-
{"all-fields",no_argument,0,'A'},
1557+
{"all-fields",required_argument,0,'A'},
15571558
{"duplicate",no_argument,0,'d'},
15581559
{"format",required_argument,0,'f'},
15591560
{"gene-list",required_argument,0,'g'},
@@ -1593,9 +1594,14 @@ int run(int argc, char **argv)
15931594
case 2 : args->record_cmd_line = 0; break;
15941595
case 1 : args->column_types = optarg; break;
15951596
case 'A':
1596-
if ( !strcasecmp(optarg,"tab") ) args->all_fields_delim = "\t";
1597-
else if ( !strcasecmp(optarg,"space") ) args->all_fields_delim = " ";
1598-
else args->all_fields_delim = optarg;
1597+
if ( !strcasecmp(optarg,"tab") ) args->all_fields_delim = strdup("\t");
1598+
else if ( !strcasecmp(optarg,"space") ) args->all_fields_delim = strdup(" ");
1599+
else
1600+
{
1601+
args->all_fields_delim = calloc(strlen(optarg)+2,1);
1602+
args->all_fields_delim[0] = '\\';
1603+
memcpy(args->all_fields_delim+1,optarg,strlen(optarg));
1604+
}
15991605
break;
16001606
case 'H': args->print_header++; break;
16011607
case 'x': drop_sites = 1; break;

test/split-vep.12.4.out

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#[1]POS [2]Allele@@@[3]Consequence@@@[4]IMPACT@@@[5]SYMBOL@@@[6]Gene@@@[7]Feature_type@@@[8]Feature@@@[9]BIOTYPE@@@[10]EXON@@@[11]INTRON@@@[12]HGVSc@@@[13]HGVSp@@@[14]cDNA_position@@@[15]CDS_position@@@[16]Protein_position@@@[17]Amino_acids@@@[18]Codons@@@[19]Existing_variation@@@[20]ALLELE_NUM@@@[21]DISTANCE@@@[22]STRAND@@@[23]FLAGS@@@[24]VARIANT_CLASS@@@[25]SYMBOL_SOURCE@@@[26]HGNC_ID@@@[27]CANONICAL@@@[28]TSL@@@[29]APPRIS@@@[30]CCDS@@@[31]ENSP@@@[32]SWISSPROT@@@[33]TREMBL@@@[34]UNIPARC@@@[35]SOURCE@@@[36]GENE_PHENO@@@[37]SIFT@@@[38]PolyPhen@@@[39]DOMAINS@@@[40]miRNA@@@[41]HGVS_OFFSET@@@[42]AF@@@[43]AFR_AF@@@[44]AMR_AF@@@[45]EAS_AF@@@[46]EUR_AF@@@[47]SAS_AF@@@[48]AA_AF@@@[49]EA_AF@@@[50]gnomAD_AF@@@[51]gnomAD_AFR_AF@@@[52]gnomAD_AMR_AF@@@[53]gnomAD_ASJ_AF@@@[54]gnomAD_EAS_AF@@@[55]gnomAD_FIN_AF@@@[56]gnomAD_NFE_AF@@@[57]gnomAD_OTH_AF@@@[58]gnomAD_SAS_AF@@@[59]MAX_AF@@@[60]MAX_AF_POPS@@@[61]CLIN_SIG@@@[62]SOMATIC@@@[63]PHENO@@@[64]PUBMED@@@[65]MOTIF_NAME@@@[66]MOTIF_POS@@@[67]HIGH_INF_POS@@@[68]MOTIF_SCORE_CHANGE@@@[69]LoF@@@[70]LoF_filter@@@[71]LoF_flags@@@[72]LoF_info@@@[73]CADD_PHRED@@@[74]CADD_RAW@@@[75]gnomAD2.1@@@[76]gnomAD2.1_AF_raw@@@[77]gnomAD2.1_AF_popmax@@@[78]gnomAD2.1_AF_afr@@@[79]gnomAD2.1_AF_amr@@@[80]gnomAD2.1_AF_asj@@@[81]gnomAD2.1_AF_eas@@@[82]gnomAD2.1_AF_fin@@@[83]gnomAD2.1_AF_nfe@@@[84]gnomAD2.1_AF_oth@@@[85]gnomAD2.1_AF_sas
2+
14464 T@@@non_coding_transcript_exon_variant@@@MODIFIER@@@WASH7P@@@ENSG00000227232@@@Transcript@@@ENST00000423562@@@unprocessed_pseudogene@@@10/10@@@.@@@ENST00000423562.1:n.1568T>A@@@.@@@1568@@@.@@@.@@@.@@@.@@@rs546169444@@@1@@@.@@@-1@@@.@@@SNV@@@HGNC@@@38034@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.0958@@@0.0144@@@0.1138@@@0.005@@@0.1859@@@0.1943@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.1943@@@SAS@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.
3+
14464 T@@@non_coding_transcript_exon_variant@@@MODIFIER@@@WASH7P@@@ENSG00000227232@@@Transcript@@@ENST00000438504@@@unprocessed_pseudogene@@@12/12@@@.@@@ENST00000438504.2:n.1682T>A@@@.@@@1682@@@.@@@.@@@.@@@.@@@rs546169444@@@1@@@.@@@-1@@@.@@@SNV@@@HGNC@@@38034@@@YES@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.0958@@@0.0144@@@0.1138@@@0.005@@@0.1859@@@0.1943@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.1943@@@SAS@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.
4+
14464 T@@@downstream_gene_variant@@@MODIFIER@@@DDX11L1@@@ENSG00000223972@@@Transcript@@@ENST00000456328@@@processed_transcript@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@rs546169444@@@1@@@55@@@1@@@.@@@SNV@@@HGNC@@@37102@@@YES@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.0958@@@0.0144@@@0.1138@@@0.005@@@0.1859@@@0.1943@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.1943@@@SAS@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.
5+
14464 T@@@non_coding_transcript_exon_variant@@@MODIFIER@@@WASH7P@@@ENSG00000227232@@@Transcript@@@ENST00000488147@@@unprocessed_pseudogene@@@11/11@@@.@@@ENST00000488147.1:n.1291T>A@@@.@@@1291@@@.@@@.@@@.@@@.@@@rs546169444@@@1@@@.@@@-1@@@.@@@SNV@@@HGNC@@@38034@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.0958@@@0.0144@@@0.1138@@@0.005@@@0.1859@@@0.1943@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.1943@@@SAS@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.
6+
14464 T@@@non_coding_transcript_exon_variant@@@MODIFIER@@@WASH7P@@@ENSG00000227232@@@Transcript@@@ENST00000538476@@@unprocessed_pseudogene@@@13/13@@@.@@@ENST00000538476.1:n.1530T>A@@@.@@@1530@@@.@@@.@@@.@@@.@@@rs546169444@@@1@@@.@@@-1@@@.@@@SNV@@@HGNC@@@38034@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.0958@@@0.0144@@@0.1138@@@0.005@@@0.1859@@@0.1943@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.1943@@@SAS@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.
7+
14464 T@@@non_coding_transcript_exon_variant@@@MODIFIER@@@WASH7P@@@ENSG00000227232@@@Transcript@@@ENST00000541675@@@unprocessed_pseudogene@@@9/9@@@.@@@ENST00000541675.1:n.1315T>A@@@.@@@1315@@@.@@@.@@@.@@@.@@@rs546169444@@@1@@@.@@@-1@@@.@@@SNV@@@HGNC@@@38034@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.0958@@@0.0144@@@0.1138@@@0.005@@@0.1859@@@0.1943@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.1943@@@SAS@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.
8+
14464 T@@@regulatory_region_variant@@@MODIFIER@@@.@@@.@@@RegulatoryFeature@@@ENSR00000000002@@@open_chromatin_region@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@rs546169444@@@1@@@.@@@.@@@.@@@SNV@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.0958@@@0.0144@@@0.1138@@@0.005@@@0.1859@@@0.1943@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@0.1943@@@SAS@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.@@@.

test/test.pl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -807,6 +807,7 @@
807807
run_test(\&test_vcf_plugin,$opts,in=>'split-vep',out=>'split-vep.12.out',cmd=>'+split-vep',args=>qq[-t 1:14464 -f '%POS\\t%CSQ\\n' -A tab -d]);
808808
run_test(\&test_vcf_plugin,$opts,in=>'split-vep',out=>'split-vep.12.2.out',cmd=>'+split-vep',args=>qq[-t 1:14464 -f '%POS\\t%CSQ\\n' -A tab -d -H]);
809809
run_test(\&test_vcf_plugin,$opts,in=>'split-vep',out=>'split-vep.12.3.out',cmd=>'+split-vep',args=>qq[-t 1:14464 -f '%POS\\t%CSQ\\n' -A tab -d -HH]);
810+
run_test(\&test_vcf_plugin,$opts,in=>'split-vep',out=>'split-vep.12.4.out',cmd=>'+split-vep',args=>qq[-t 1:14464 -f '%POS\\t%CSQ\\n' -A @@@ -d -H]);
810811
run_test(\&test_vcf_plugin,$opts,in=>'split-vep.4',out=>'split-vep.13.out',cmd=>'+split-vep',args=>qq[-f '%POS\\t%BCSQ\\n' -a BCSQ -A tab -d]);
811812
run_test(\&test_vcf_plugin,$opts,in=>'split-vep.4',out=>'split-vep.13.out',cmd=>'+split-vep',args=>qq[-f '%POS\\t%BCSQ\\n' -A tab -d]);
812813
run_test(\&test_vcf_plugin,$opts,in=>'split-vep.4',out=>'split-vep.13.1.out',cmd=>'+split-vep',args=>qq[-f '%POS\\t%BCSQ\\n' -a BCSQ -A tab -d -s ::worst]);

0 commit comments

Comments
 (0)