Removes copy form VariableValue

On `Use std::shared_ptr for variable resolution` @WGH changes
VariableValue to be a shared_ptr. As shared pointer, the copy
on AnchoredVariable is no longer necessary. The copy was removed
along with the copy constructor.
This commit is contained in:
Felipe Zimmerle
2020-08-26 09:18:36 -03:00
parent 71d9b9e70f
commit 7f1633c1c2
3 changed files with 11 additions and 24 deletions

View File

@@ -79,7 +79,7 @@ class AnchoredVariable {
std::string m_value; std::string m_value;
private: private:
VariableValue m_var; std::shared_ptr<VariableValue> m_var;
}; };
} // namespace modsecurity } // namespace modsecurity

View File

@@ -60,20 +60,7 @@ class VariableValue {
m_value(*value) m_value(*value)
{ } { }
VariableValue(const VariableValue &o) : VariableValue(const VariableValue &o) = delete;
m_collection(o.m_collection),
m_key(o.m_key),
m_keyWithCollection(o.m_keyWithCollection),
m_value(o.m_value)
{
for (auto &i : o.m_orign) {
VariableOrigin *origin(new VariableOrigin());
origin->m_offset = i.m_offset;
origin->m_length = i.m_length;
m_orign.push_back(*origin);
}
}
const std::string& getName() const noexcept { const std::string& getName() const noexcept {
return m_keyWithCollection; return m_keyWithCollection;

View File

@@ -34,7 +34,7 @@ AnchoredVariable::AnchoredVariable(Transaction *t,
m_offset(0), m_offset(0),
m_name(name), m_name(name),
m_value(""), m_value(""),
m_var(&name) { m_var(std::make_shared<VariableValue>(&name)) {
} }
void AnchoredVariable::unset() { void AnchoredVariable::unset() {
@@ -50,7 +50,7 @@ void AnchoredVariable::set(const std::string &a, size_t offset,
VariableOrigin origin; VariableOrigin origin;
origin.m_offset = offset; origin.m_offset = offset;
origin.m_length = offsetLen; origin.m_length = offsetLen;
m_var.addOrigin(std::move(origin)); m_var->addOrigin(std::move(origin));
} }
@@ -60,7 +60,7 @@ void AnchoredVariable::set(const std::string &a, size_t offset) {
VariableOrigin origin; VariableOrigin origin;
origin.m_offset = offset; origin.m_offset = offset;
origin.m_length = m_value.size(); origin.m_length = m_value.size();
m_var.addOrigin(std::move(origin)); m_var->addOrigin(std::move(origin));
} }
@@ -71,7 +71,7 @@ void AnchoredVariable::set(const char *a, size_t offset) {
m_value.assign(a, strlen(a)); m_value.assign(a, strlen(a));
origin.m_offset = offset; origin.m_offset = offset;
origin.m_length = m_value.size(); origin.m_length = m_value.size();
m_var.addOrigin(std::move(origin)); m_var->addOrigin(std::move(origin));
} }
@@ -83,7 +83,7 @@ void AnchoredVariable::set(const bpstd::string_view &a, size_t offset) {
origin.m_offset = offset; origin.m_offset = offset;
origin.m_length = m_value.size(); origin.m_length = m_value.size();
m_var.addOrigin(std::move(origin)); m_var->addOrigin(std::move(origin));
} }
@@ -98,7 +98,7 @@ void AnchoredVariable::append(const std::string &a, size_t offset,
VariableOrigin origin; VariableOrigin origin;
origin.m_offset = offset; origin.m_offset = offset;
origin.m_length = a.size(); origin.m_length = a.size();
m_var.addOrigin(std::move(origin)); m_var->addOrigin(std::move(origin));
} }
@@ -113,7 +113,7 @@ void AnchoredVariable::append(const std::string &a, size_t offset,
VariableOrigin origin; VariableOrigin origin;
origin.m_offset = offset; origin.m_offset = offset;
origin.m_length = size; origin.m_length = size;
m_var.addOrigin(std::move(origin)); m_var->addOrigin(std::move(origin));
} }
@@ -122,8 +122,8 @@ void AnchoredVariable::evaluate(VariableValues *l) {
return; return;
} }
m_var.setValue(m_value); m_var->setValue(m_value);
l->push_back(std::make_shared<VariableValue>(m_var)); l->push_back(m_var);
} }