summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpeterbell10 <peterbell10@live.co.uk>2019-06-11 14:39:44 +0200
committerGitHub <noreply@github.com>2019-06-11 14:39:44 +0200
commit9dc1343bda0592f2d27bb216eb21fdec97f73945 (patch)
tree21124243b854cfbd37cdec70a20e4505deac9f3b
parentRespect return value of cLuaWindow's OnClicked handler (#4322) (diff)
downloadcuberite-9dc1343bda0592f2d27bb216eb21fdec97f73945.tar
cuberite-9dc1343bda0592f2d27bb216eb21fdec97f73945.tar.gz
cuberite-9dc1343bda0592f2d27bb216eb21fdec97f73945.tar.bz2
cuberite-9dc1343bda0592f2d27bb216eb21fdec97f73945.tar.lz
cuberite-9dc1343bda0592f2d27bb216eb21fdec97f73945.tar.xz
cuberite-9dc1343bda0592f2d27bb216eb21fdec97f73945.tar.zst
cuberite-9dc1343bda0592f2d27bb216eb21fdec97f73945.zip
-rw-r--r--src/BrewingRecipes.cpp3
-rw-r--r--src/FurnaceRecipe.cpp14
-rw-r--r--src/StringUtils.cpp8
-rw-r--r--src/StringUtils.h3
4 files changed, 19 insertions, 9 deletions
diff --git a/src/BrewingRecipes.cpp b/src/BrewingRecipes.cpp
index 3f5173d3d..ca427f9cc 100644
--- a/src/BrewingRecipes.cpp
+++ b/src/BrewingRecipes.cpp
@@ -45,8 +45,9 @@ void cBrewingRecipes::ReloadRecipes(void)
ParsingLine.erase(FirstCommentSymbol);
}
- if (ParsingLine.empty())
+ if (IsOnlyWhitespace(ParsingLine))
{
+ // Ignore empty and whitespace only lines
continue;
}
AddRecipeFromLine(ParsingLine, LineNum);
diff --git a/src/FurnaceRecipe.cpp b/src/FurnaceRecipe.cpp
index a4647b7a0..3b3141418 100644
--- a/src/FurnaceRecipe.cpp
+++ b/src/FurnaceRecipe.cpp
@@ -68,14 +68,6 @@ void cFurnaceRecipe::ReloadRecipes(void)
while (std::getline(f, ParsingLine))
{
LineNum++;
- if (ParsingLine.empty())
- {
- // There is a problem here on Android. Text files transferred from another OS may have a newline representation Android's implementation of getline doesn't expect
- // Thus, part of a newline may be left in ParsingLine. ::empty() thus thinks the string isn't empty, and the below code outputs interesting errors since it was passed a nearly empty string
- // Ref: https://stackoverflow.com/questions/6089231/getting-std-ifstream-to-handle-lf-cr-and-crlf
- // TODO: There is a solution in the above reference, but it isn't very pretty. Fix it somehow.
- continue;
- }
// Remove comments from the line:
size_t FirstCommentSymbol = ParsingLine.find('#');
@@ -84,6 +76,12 @@ void cFurnaceRecipe::ReloadRecipes(void)
ParsingLine.erase(ParsingLine.begin() + static_cast<const long>(FirstCommentSymbol), ParsingLine.end());
}
+ if (IsOnlyWhitespace(ParsingLine))
+ {
+ // Ignore empty and whitespace only lines
+ continue;
+ }
+
switch (ParsingLine[0])
{
case '#':
diff --git a/src/StringUtils.cpp b/src/StringUtils.cpp
index ca9d4b587..ec387437d 100644
--- a/src/StringUtils.cpp
+++ b/src/StringUtils.cpp
@@ -1071,3 +1071,11 @@ bool StringToFloat(const AString & a_String, float & a_Num)
return true;
}
+
+
+
+
+bool IsOnlyWhitespace(const AString & a_String)
+{
+ return std::all_of(a_String.cbegin(), a_String.cend(), isspace);
+}
diff --git a/src/StringUtils.h b/src/StringUtils.h
index 3751d9946..5fb45a879 100644
--- a/src/StringUtils.h
+++ b/src/StringUtils.h
@@ -148,6 +148,9 @@ extern AString StringsConcat(const AStringVector & a_Strings, char a_Separator);
/** Converts a string into a float. Returns false if the conversion fails. */
extern bool StringToFloat(const AString & a_String, float & a_Num);
+/** Returns true if only whitespace characters are present in the string */
+bool IsOnlyWhitespace(const AString & a_String);
+