From 0d0536d4752be39568160c980899e23ec696e42d Mon Sep 17 00:00:00 2001 From: Berk Hess Date: Mon, 4 Oct 2021 11:58:33 +0200 Subject: [PATCH] Improve transformation coordinate expression checks Change exceptions for transformation expression evaluation from "internal bug" to "user input inconsistency", as these with throw with incorrect or inconsistent user input. Added explicit check for quotes, as that might confuse users. --- src/gromacs/gmxpreprocess/readpull.cpp | 6 ++++++ src/gromacs/pulling/transformationcoordinate.cpp | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gromacs/gmxpreprocess/readpull.cpp b/src/gromacs/gmxpreprocess/readpull.cpp index b8062ee54c..2524976cb5 100644 --- a/src/gromacs/gmxpreprocess/readpull.cpp +++ b/src/gromacs/gmxpreprocess/readpull.cpp @@ -152,6 +152,12 @@ static void initTransformationPullCoord(t_pull_coord* pcrd, const pull_params_t& "'transformation'", coord_index_for_output))); } + else if (pcrd->expression[0] == '"' || pcrd->expression[0] == '\'') + { + GMX_THROW(gmx::InvalidInputError(gmx::formatString( + "pull-coord%d-expression should not start with double quote or a quote", + coord_index_for_output))); + } if (pcrd->dx == 0) { GMX_THROW(gmx::InvalidInputError(gmx::formatString( diff --git a/src/gromacs/pulling/transformationcoordinate.cpp b/src/gromacs/pulling/transformationcoordinate.cpp index 5271e397d0..e3c1cea9e1 100644 --- a/src/gromacs/pulling/transformationcoordinate.cpp +++ b/src/gromacs/pulling/transformationcoordinate.cpp @@ -65,7 +65,7 @@ double getTransformationPullCoordinateValue(pull_coord_work_t* coord) #if HAVE_MUPARSER catch (mu::Parser::exception_type& e) { - GMX_THROW(InternalError( + GMX_THROW(InconsistentInputError( formatString("failed to evaluate expression for transformation pull-coord%d: %s\n", transformationPullCoordinateIndex + 1, e.GetMsg().c_str()))); @@ -73,7 +73,7 @@ double getTransformationPullCoordinateValue(pull_coord_work_t* coord) #endif catch (std::exception& e) { - GMX_THROW(InternalError( + GMX_THROW(InconsistentInputError( formatString("failed to evaluate expression for transformation pull-coord%d.\n" "Last variable pull-coord-index: %d.\n" "Message: %s\n", -- 2.22.0