Skip to content

Commit cc5d3f5

Browse files
committed
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.
1 parent 5a0e71f commit cc5d3f5

File tree

3 files changed

+11
-24
lines changed

3 files changed

+11
-24
lines changed

headers/modsecurity/anchored_variable.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class AnchoredVariable {
7979
std::string m_value;
8080

8181
private:
82-
VariableValue m_var;
82+
std::shared_ptr<VariableValue> m_var;
8383
};
8484

8585
} // namespace modsecurity

headers/modsecurity/variable_value.h

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,20 +60,7 @@ class VariableValue {
6060
m_value(*value)
6161
{ }
6262

63-
VariableValue(const VariableValue &o) :
64-
m_collection(o.m_collection),
65-
m_key(o.m_key),
66-
m_keyWithCollection(o.m_keyWithCollection),
67-
m_value(o.m_value)
68-
{
69-
for (auto &i : o.m_orign) {
70-
VariableOrigin *origin(new VariableOrigin());
71-
origin->m_offset = i.m_offset;
72-
origin->m_length = i.m_length;
73-
m_orign.push_back(*origin);
74-
}
75-
}
76-
63+
VariableValue(const VariableValue &o) = delete;
7764

7865
const std::string& getName() const noexcept {
7966
return m_keyWithCollection;

src/anchored_variable.cc

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ AnchoredVariable::AnchoredVariable(Transaction *t,
3434
m_offset(0),
3535
m_name(name),
3636
m_value(""),
37-
m_var(&name) {
37+
m_var(std::make_shared<VariableValue>(&name)) {
3838
}
3939

4040
void AnchoredVariable::unset() {
@@ -50,7 +50,7 @@ void AnchoredVariable::set(const std::string &a, size_t offset,
5050
VariableOrigin origin;
5151
origin.m_offset = offset;
5252
origin.m_length = offsetLen;
53-
m_var.addOrigin(std::move(origin));
53+
m_var->addOrigin(std::move(origin));
5454
}
5555

5656

@@ -60,7 +60,7 @@ void AnchoredVariable::set(const std::string &a, size_t offset) {
6060
VariableOrigin origin;
6161
origin.m_offset = offset;
6262
origin.m_length = m_value.size();
63-
m_var.addOrigin(std::move(origin));
63+
m_var->addOrigin(std::move(origin));
6464
}
6565

6666

@@ -71,7 +71,7 @@ void AnchoredVariable::set(const char *a, size_t offset) {
7171
m_value.assign(a, strlen(a));
7272
origin.m_offset = offset;
7373
origin.m_length = m_value.size();
74-
m_var.addOrigin(std::move(origin));
74+
m_var->addOrigin(std::move(origin));
7575
}
7676

7777

@@ -83,7 +83,7 @@ void AnchoredVariable::set(const bpstd::string_view &a, size_t offset) {
8383
origin.m_offset = offset;
8484
origin.m_length = m_value.size();
8585

86-
m_var.addOrigin(std::move(origin));
86+
m_var->addOrigin(std::move(origin));
8787
}
8888

8989

@@ -98,7 +98,7 @@ void AnchoredVariable::append(const std::string &a, size_t offset,
9898
VariableOrigin origin;
9999
origin.m_offset = offset;
100100
origin.m_length = a.size();
101-
m_var.addOrigin(std::move(origin));
101+
m_var->addOrigin(std::move(origin));
102102
}
103103

104104

@@ -113,7 +113,7 @@ void AnchoredVariable::append(const std::string &a, size_t offset,
113113
VariableOrigin origin;
114114
origin.m_offset = offset;
115115
origin.m_length = size;
116-
m_var.addOrigin(std::move(origin));
116+
m_var->addOrigin(std::move(origin));
117117
}
118118

119119

@@ -122,8 +122,8 @@ void AnchoredVariable::evaluate(VariableValues *l) {
122122
return;
123123
}
124124

125-
m_var.setValue(m_value);
126-
l->push_back(std::make_shared<VariableValue>(m_var));
125+
m_var->setValue(m_value);
126+
l->push_back(m_var);
127127
}
128128

129129

0 commit comments

Comments
 (0)