File tree Expand file tree Collapse file tree 3 files changed +30
-14
lines changed
pkg/demoinfocs/sendtables2 Expand file tree Collapse file tree 3 files changed +30
-14
lines changed Original file line number Diff line number Diff line change @@ -126,7 +126,7 @@ func (p property) Bind(variable any, t st.PropertyValueType) {
126126}
127127
128128func (e * Entity ) Property (name string ) st.Property {
129- ok := e .class .serializer .getFieldPathForName ( newFieldPath (), name )
129+ ok := e .class .serializer .checkFieldName ( name )
130130 if ! ok {
131131 return nil
132132 }
Original file line number Diff line number Diff line change @@ -158,11 +158,10 @@ func (p *Parser) ParsePacket(b []byte) error {
158158 fieldTypes := map [string ]* fieldType {}
159159
160160 for _ , s := range msg .GetSerializers () {
161- serializer := & serializer {
162- name : msg .GetSymbols ()[s .GetSerializerNameSym ()],
163- version : s .GetSerializerVersion (),
164- fields : []* field {},
165- }
161+ serializer := newSerializer (
162+ msg .GetSymbols ()[s .GetSerializerNameSym ()],
163+ s .GetSerializerVersion (),
164+ )
166165
167166 for _ , i := range s .GetFieldsIndex () {
168167 if _ , ok := fields [i ]; ! ok {
Original file line number Diff line number Diff line change @@ -11,10 +11,21 @@ type fieldIndex struct {
1111}
1212
1313type serializer struct {
14- name string
15- version int32
16- fields []* field
17- fieldIndexes map [string ]* fieldIndex
14+ name string
15+ version int32
16+ fields []* field
17+ fieldIndexes map [string ]* fieldIndex
18+ fieldNameChecks map [string ]bool
19+ }
20+
21+ func newSerializer (name string , version int32 ) * serializer {
22+ return & serializer {
23+ name : name ,
24+ version : version ,
25+ fields : []* field {},
26+ fieldIndexes : make (map [string ]* fieldIndex ),
27+ fieldNameChecks : make (map [string ]bool ),
28+ }
1829}
1930
2031func (s * serializer ) id () string {
@@ -78,12 +89,18 @@ func (s *serializer) addField(f *field) {
7889 newFieldIndex := len (s .fields )
7990 s .fields = append (s .fields , f )
8091
81- if s .fieldIndexes == nil {
82- s .fieldIndexes = make (map [string ]* fieldIndex )
83- }
84-
8592 s .fieldIndexes [f .varName ] = & fieldIndex {
8693 index : newFieldIndex ,
8794 field : f ,
8895 }
8996}
97+
98+ func (s * serializer ) checkFieldName (name string ) bool {
99+ ok , exists := s .fieldNameChecks [name ]
100+ if ! exists {
101+ ok = s .getFieldPathForName (newFieldPath (), name )
102+ s .fieldNameChecks [name ] = ok
103+ }
104+
105+ return ok
106+ }
You can’t perform that action at this time.
0 commit comments