File tree 1 file changed +28
-2
lines changed
1 file changed +28
-2
lines changed Original file line number Diff line number Diff line change @@ -59,6 +59,15 @@ function decoder(mtype) {
59
59
( "case 2:" ) ;
60
60
61
61
if ( types . basic [ type ] === undefined ) gen
62
+
63
+ // HACK: `types.basic[type] === undefined` means wire_type is 2
64
+ // if the wire_type is wrong, skip the the decode
65
+ // ("if (%i !== (t&7)) {", typeof types.basic[type] === 'number' ? types.basic[type] : 2)
66
+ ( "if (2 !== (t&7)) {" )
67
+ ( "r.skipType(t&7)" )
68
+ ( "break" )
69
+ ( "}" )
70
+
62
71
( "value=types[%i].decode(r,r.uint32())" , i ) ; // can't be groups
63
72
else gen
64
73
( "value=r.%s()" , type ) ;
@@ -91,14 +100,31 @@ function decoder(mtype) {
91
100
( "}else" ) ;
92
101
93
102
// Non-packed
94
- if ( types . basic [ type ] === undefined ) gen ( field . resolvedType . group
103
+ if ( types . basic [ type ] === undefined ) gen
104
+
105
+ // HACK: ditto.
106
+ ( "if (2 !== (t&7)) {" )
107
+ ( "r.skipType(t&7)" )
108
+ ( "break" )
109
+ ( "}" )
110
+
111
+ ( field . resolvedType . group
95
112
? "%s.push(types[%i].decode(r))"
96
113
: "%s.push(types[%i].decode(r,r.uint32()))" , ref , i ) ;
97
114
else gen
98
115
( "%s.push(r.%s())" , ref , type ) ;
99
116
100
117
// Non-repeated
101
- } else if ( types . basic [ type ] === undefined ) gen ( field . resolvedType . group
118
+
119
+ } else if ( types . basic [ type ] === undefined ) gen
120
+
121
+ // HACK: ditto.
122
+ ( "if (2 !== (t&7)) {" )
123
+ ( "r.skipType(t&7)" )
124
+ ( "break" )
125
+ ( "}" )
126
+
127
+ ( field . resolvedType . group
102
128
? "%s=types[%i].decode(r)"
103
129
: "%s=types[%i].decode(r,r.uint32())" , ref , i ) ;
104
130
else gen
You can’t perform that action at this time.
0 commit comments