From c04751306def442cbca0ccf815ad9cae6f677bd7 Mon Sep 17 00:00:00 2001 From: Minh Bui Date: Mon, 25 Jun 2018 11:21:46 +1000 Subject: [PATCH] Error about blank chars in partition file (reported by David Maddison) --- alignment/alignment.cpp | 5 +++++ nclextra/msetsblock.cpp | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/alignment/alignment.cpp b/alignment/alignment.cpp index be8d2220..2ecbb232 100644 --- a/alignment/alignment.cpp +++ b/alignment/alignment.cpp @@ -2944,6 +2944,8 @@ void convert_range(const char *str, int &lower, int &upper, int &step_size, char //int d_save = d; upper = d; step_size = 1; + // skip blank chars + for (; *endptr == ' '; endptr++) {} if (*endptr != '-') return; // parse the upper bound of the range @@ -2958,6 +2960,9 @@ void convert_range(const char *str, int &lower, int &upper, int &step_size, char //lower = d_save; upper = d; + // skip blank chars + for (; *endptr == ' '; endptr++) {} + if (*endptr != '\\') return; // parse the step size of the range diff --git a/nclextra/msetsblock.cpp b/nclextra/msetsblock.cpp index 3760fd2b..bf57d25e 100644 --- a/nclextra/msetsblock.cpp +++ b/nclextra/msetsblock.cpp @@ -161,6 +161,7 @@ void MSetsBlock::Read(NxsToken &token) myset->aln_file = myset->position_spec.substr(0, pos); myset->position_spec = myset->position_spec.substr(pos+1); } + trimString(myset->position_spec); if ((pos=myset->position_spec.find(',')) != string::npos && isalpha(myset->position_spec[0])) { myset->sequence_type = myset->position_spec.substr(0, pos); myset->position_spec = myset->position_spec.substr(pos+1); @@ -174,7 +175,11 @@ void MSetsBlock::Read(NxsToken &token) errormsg += " instead"; throw NxsException(errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn()); } - + trimString(myset->aln_file); + trimString(myset->char_partition); + trimString(myset->model_name); + trimString(myset->position_spec); + trimString(myset->sequence_type); } // if (token.Equals("CHARSET")) else if (token.Equals("CHARPARTITION")) {