Merge remote-tracking branch 'origin/topic/timw/val-avoid-type-casting'

* origin/topic/timw/val-avoid-type-casting:
  Avoid calling typecasts in Val when we have direct access to the underlying value object
This commit is contained in:
Tim Wojtulewicz 2024-04-29 09:06:24 -07:00
commit 19702b06e7
3 changed files with 14 additions and 15 deletions

View file

@ -1,3 +1,7 @@
7.0.0-dev.191 | 2024-04-29 09:06:24 -0700
* Avoid calling typecasts in Val when we have direct access to the underlying value object (Tim Wojtulewicz, Corelight)
7.0.0-dev.187 | 2024-04-26 12:29:18 -0700
* Gracefully handle empty/missing shadow file (Peter Cullen, Corelight)

View file

@ -1 +1 @@
7.0.0-dev.187
7.0.0-dev.191

View file

@ -742,22 +742,18 @@ StringVal::~StringVal() { delete string_val; }
ValPtr StringVal::SizeVal() const { return val_mgr->Count(string_val->Len()); }
int StringVal::Len() const { return AsString()->Len(); }
int StringVal::Len() const { return string_val->Len(); }
const u_char* StringVal::Bytes() const { return AsString()->Bytes(); }
const u_char* StringVal::Bytes() const { return string_val->Bytes(); }
const char* StringVal::CheckString() const { return AsString()->CheckString(); }
const char* StringVal::CheckString() const { return string_val->CheckString(); }
std::pair<const char*, size_t> StringVal::CheckStringWithSize() const { return AsString()->CheckStringWithSize(); }
std::pair<const char*, size_t> StringVal::CheckStringWithSize() const { return string_val->CheckStringWithSize(); }
string StringVal::ToStdString() const {
auto* bs = AsString();
return {(char*)bs->Bytes(), static_cast<size_t>(bs->Len())};
}
string StringVal::ToStdString() const { return {(char*)string_val->Bytes(), static_cast<size_t>(string_val->Len())}; }
string_view StringVal::ToStdStringView() const {
auto* bs = AsString();
return {(char*)bs->Bytes(), static_cast<size_t>(bs->Len())};
return {(char*)string_val->Bytes(), static_cast<size_t>(string_val->Len())};
}
StringVal* StringVal::ToUpper() {
@ -1223,7 +1219,7 @@ bool PatternVal::AddTo(Val* v, bool /* is_first_init */) const {
PatternVal* pv = v->AsPatternVal();
RE_Matcher* re = new RE_Matcher(AsPattern()->PatternText());
RE_Matcher* re = new RE_Matcher(re_val->PatternText());
re->AddPat(pv->AsPattern()->PatternText());
re->Compile();
@ -1233,7 +1229,7 @@ bool PatternVal::AddTo(Val* v, bool /* is_first_init */) const {
}
void PatternVal::SetMatcher(RE_Matcher* re) {
delete AsPattern();
delete re_val;
re_val = re;
}
@ -1243,7 +1239,7 @@ bool PatternVal::MatchAnywhere(const String* s) const { return re_val->MatchAnyw
void PatternVal::ValDescribe(ODesc* d) const {
d->Add("/");
d->Add(AsPattern()->PatternText());
d->Add(re_val->PatternText());
d->Add("/");
}
@ -2668,7 +2664,6 @@ ValPtr TableVal::DoClone(CloneState* state) {
auto tv = make_intrusive<TableVal>(table_type, init_attrs);
state->NewClone(this, tv);
const PDict<TableEntryVal>* tbl = AsTable();
for ( const auto& tble : *table_val ) {
auto key = tble.GetHashKey();
auto* val = tble.value;