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 60d89608be
commit c7f3c9eef0
No known key found for this signature in database
GPG Key ID: E6DFB08CE8B11277
3 changed files with 11 additions and 24 deletions

View File

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

View File

@ -60,20 +60,7 @@ class VariableValue {
m_value(*value)
{ }
VariableValue(const VariableValue &o) :
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);
}
}
VariableValue(const VariableValue &o) = delete;
const std::string& getName() const noexcept {
return m_keyWithCollection;

View File

@ -34,7 +34,7 @@ AnchoredVariable::AnchoredVariable(Transaction *t,
m_offset(0),
m_name(name),
m_value(""),
m_var(&name) {
m_var(std::make_shared<VariableValue>(&name)) {
}
void AnchoredVariable::unset() {
@ -50,7 +50,7 @@ void AnchoredVariable::set(const std::string &a, size_t offset,
VariableOrigin origin;
origin.m_offset = offset;
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;
origin.m_offset = offset;
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));
origin.m_offset = offset;
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_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;
origin.m_offset = offset;
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;
origin.m_offset = offset;
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;
}
m_var.setValue(m_value);
l->push_back(std::make_shared<VariableValue>(m_var));
m_var->setValue(m_value);
l->push_back(m_var);
}