2732520d27d9d63e274fd42c0ea225e1a4f35641 angie Thu Jul 13 13:06:44 2017 -0700 hgvsToVcfRow was not testing for NULL changeList -- fixed. refs #19702 note-15 diff --git src/hg/lib/hgHgvs.c src/hg/lib/hgHgvs.c index c470f64..7bc0ae6 100644 --- src/hg/lib/hgHgvs.c +++ src/hg/lib/hgHgvs.c @@ -2173,31 +2173,41 @@ struct bed *mapping = hgvsValidateAndMap(hgvs, db, term, dyWarn, &pslTable); if (!mapping) { dyStringPrintf(dyError, "Unable to map '%s' to reference %s: %s", term, db, dyStringContents(dyWarn)); } else { if (dyStringIsNotEmpty(dyWarn)) { dyStringAppend(dyError, dyStringContents(dyWarn)); dyStringClear(dyWarn); } struct hgvsChange *changeList = hgvsParseNucleotideChange(hgvs->changes, hgvs->type, dyWarn); - if (dyStringIsNotEmpty(dyWarn)) + if (changeList == NULL) + { + if (isEmpty(hgvs->changes)) + dyStringPrintf(dyError, "HGVS term '%s' does not specify any sequence changes", term); + else if (dyStringIsNotEmpty(dyWarn)) + dyStringPrintf(dyError, "Unable to parse HGVS description in '%s': %s", term, + dyStringContents(dyWarn)); + else + dyStringPrintf(dyError, "Unable to parse HGVS description in '%s'", term); + } + else if (dyStringIsNotEmpty(dyWarn)) { dyStringPrintf(dyError, "Unable to parse HGVS description in '%s': %s", term, dyStringContents(dyWarn)); } else if (changeList->type == hgvsctRepeat) { dyStringPrintf(dyError, "Can't convert '%s' to VCF: HGVS repeat notation is not supported.", term); } else { row = vcfFromHgvs(db, term, mapping, hgvs, changeList, doLeftShift, dyWarn); if (dyStringIsNotEmpty(dyWarn)) { dyStringPrintf(dyError, "Can't convert '%s' to VCF: %s",