diff --git a/src/Mod/Spreadsheet/App/Cell.cpp b/src/Mod/Spreadsheet/App/Cell.cpp index a4ab7cb35c..4cfdd0d085 100644 --- a/src/Mod/Spreadsheet/App/Cell.cpp +++ b/src/Mod/Spreadsheet/App/Cell.cpp @@ -288,6 +288,8 @@ void Cell::setContent(const char * value) clearException(); if (value) { if (owner->sheet()->isRestoring()) { + if (value[0] == '\0' || (value[0] == '\'' && value[1] == '\0')) + return; expression.reset(new App::StringExpression(owner->sheet(), value)); setUsed(EXPRESSION_SET, true); return; @@ -302,7 +304,10 @@ void Cell::setContent(const char * value) } } else if (*value == '\'') { - newExpr = std::make_unique(owner->sheet(), value + 1); + if (value[1] == '\0') + value = nullptr; + else + newExpr = std::make_unique(owner->sheet(), value + 1); } else if (*value != '\0') { // check if value is just a number diff --git a/src/Mod/Spreadsheet/App/Sheet.cpp b/src/Mod/Spreadsheet/App/Sheet.cpp index 273fdce1b3..e974e522b2 100644 --- a/src/Mod/Spreadsheet/App/Sheet.cpp +++ b/src/Mod/Spreadsheet/App/Sheet.cpp @@ -683,10 +683,12 @@ void Sheet::updateProperty(CellAddress key) else { std::string s; - if (cell->getStringContent(s)) + if (cell->getStringContent(s) && !s.empty()) output.reset(new StringExpression(this, s)); - else - output.reset(new StringExpression(this, "")); + else { + this->removeDynamicProperty(key.toString().c_str()); + return; + } } /* Eval returns either NumberExpression or StringExpression, or