You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ab...@apache.org on 2021/02/08 16:30:15 UTC
[nifi-minifi-cpp] 01/02: MINIFICPP-1477 - fix StringUtils::trim
This is an automated email from the ASF dual-hosted git repository.
aboda pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 1e4c820481cec72d6543fe26f40a5085184d91de
Author: Marton Szasz <sz...@gmail.com>
AuthorDate: Thu Feb 4 17:04:20 2021 +0100
MINIFICPP-1477 - fix StringUtils::trim
Signed-off-by: Arpad Boda <ab...@apache.org>
This closes #990
---
extensions/expression-language/Expression.cpp | 5 +----
libminifi/include/utils/StringUtils.h | 4 ++--
libminifi/include/utils/ValueParser.h | 2 +-
3 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/extensions/expression-language/Expression.cpp b/extensions/expression-language/Expression.cpp
index 545983f..5ce6f4d 100644
--- a/extensions/expression-language/Expression.cpp
+++ b/extensions/expression-language/Expression.cpp
@@ -840,10 +840,7 @@ Value expr_find(const std::vector<Value> &args) {
#endif // EXPRESSION_LANGUAGE_USE_REGEX
Value expr_trim(const std::vector<Value> &args) {
- std::string result = args[0].asString();
- auto ws_front = std::find_if_not(result.begin(), result.end(), [](int c) {return std::isspace(c);});
- auto ws_back = std::find_if_not(result.rbegin(), result.rend(), [](int c) {return std::isspace(c);}).base();
- return (ws_back <= ws_front ? Value(std::string()) : Value(std::string(ws_front, ws_back)));
+ return Value{utils::StringUtils::trim(args[0].asString())};
}
Value expr_append(const std::vector<Value> &args) {
diff --git a/libminifi/include/utils/StringUtils.h b/libminifi/include/utils/StringUtils.h
index 7dcfc49..54bab6c 100644
--- a/libminifi/include/utils/StringUtils.h
+++ b/libminifi/include/utils/StringUtils.h
@@ -99,7 +99,7 @@ class StringUtils {
* @returns modified string
*/
static inline std::string trimLeft(std::string s) {
- s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](char c) -> bool { return !isspace(c); }));
+ s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](unsigned char c) -> bool { return !isspace(c); }));
return s;
}
@@ -110,7 +110,7 @@ class StringUtils {
*/
static inline std::string trimRight(std::string s) {
- s.erase(std::find_if(s.rbegin(), s.rend(), [](char c) -> bool { return !isspace(c); }).base(), s.end());
+ s.erase(std::find_if(s.rbegin(), s.rend(), [](unsigned char c) -> bool { return !isspace(c); }).base(), s.end());
return s;
}
diff --git a/libminifi/include/utils/ValueParser.h b/libminifi/include/utils/ValueParser.h
index f7b11ba..ce4f0cc 100644
--- a/libminifi/include/utils/ValueParser.h
+++ b/libminifi/include/utils/ValueParser.h
@@ -148,7 +148,7 @@ class ValueParser {
}
void skipWhitespace() {
- while (offset < str.length() && std::isspace(str[offset])) {
+ while (offset < str.length() && std::isspace(static_cast<unsigned char>(str[offset]))) {
++offset;
}
}