diff --git a/common/text_eval/text_eval_parser.cpp b/common/text_eval/text_eval_parser.cpp index c061dd4f5b..6f362d4ea0 100644 --- a/common/text_eval/text_eval_parser.cpp +++ b/common/text_eval/text_eval_parser.cpp @@ -525,28 +525,28 @@ auto EVAL_VISITOR::evaluateFunction( const FUNC_DATA& aFunc ) const -> Result( result.ToStdString() ); } else if( name == "beforelast" && argc == 2 ) { wxString result = VALUE_UTILS::ToString( argValues[0] ); - result = result.BeforeLast( VALUE_UTILS::ToString( argValues[1] )[0] ); + result = result.BeforeLast( VALUE_UTILS::ToChar( argValues[1] ) ); return MakeValue( result.ToStdString() ); } else if( name == "afterfirst" && argc == 2 ) { wxString result = VALUE_UTILS::ToString( argValues[0] ); - result = result.AfterFirst( VALUE_UTILS::ToString( argValues[1] )[0] ); + result = result.AfterFirst( VALUE_UTILS::ToChar( argValues[1] ) ); return MakeValue( result.ToStdString() ); } else if( name == "afterlast" && argc == 2 ) { wxString result = VALUE_UTILS::ToString( argValues[0] ); - result = result.AfterLast( VALUE_UTILS::ToString( argValues[1] )[0] ); + result = result.AfterLast( VALUE_UTILS::ToChar( argValues[1] ) ); return MakeValue( result.ToStdString() ); } diff --git a/include/text_eval/text_eval_parser.h b/include/text_eval/text_eval_parser.h index 37a94ba74d..fb234e068a 100644 --- a/include/text_eval/text_eval_parser.h +++ b/include/text_eval/text_eval_parser.h @@ -133,6 +133,16 @@ namespace calc_parser return fmt::format( "{}", num ); } + static auto ToChar( const Value& aVal ) -> char + { + std::string str = ToString( aVal ); + + if( str.empty() ) + return ' '; + else + return str[0]; + } + // Check if Value represents a "truthy" value for conditionals static auto IsTruthy( const Value& aVal ) -> bool {