@@ -1137,11 +1137,11 @@ func (e *encoderBincBytes) rawBytes(vv Raw) {
11371137}
11381138
11391139func (e * encoderBincBytes ) fn (t reflect.Type ) * encFnBincBytes {
1140- return e .dh .encFnViaBH (t , e .rtidFn , e .h , e .fp , false )
1140+ return e .dh .encFnViaBH (t , e .rtidFn , e .h , e .fp , true )
11411141}
11421142
11431143func (e * encoderBincBytes ) fnNoExt (t reflect.Type ) * encFnBincBytes {
1144- return e .dh .encFnViaBH (t , e .rtidFnNoExt , e .h , e .fp , true )
1144+ return e .dh .encFnViaBH (t , e .rtidFnNoExt , e .h , e .fp , false )
11451145}
11461146
11471147func (e * encoderBincBytes ) mapStart (length int ) {
@@ -1615,7 +1615,7 @@ func (d *decoderBincBytes) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) {
16151615 } else {
16161616 rvn = reflect .New (bfn .rt )
16171617 if bfn .ext == SelfExt {
1618- sideDecode (d .hh , & d .h .sideDecPool , func (sd decoderI ) { oneOffDecode (sd , rv2i (rvn ), bytes , bfn .rt , true ) })
1618+ sideDecode (d .hh , & d .h .sideDecPool , func (sd decoderI ) { oneOffDecode (sd , rv2i (rvn ), bytes , bfn .rt , false ) })
16191619 } else {
16201620 bfn .ext .ReadExt (rv2i (rvn ), bytes )
16211621 }
@@ -2841,16 +2841,17 @@ func (d *decoderBincBytes) interfaceExtConvertAndDecode(v interface{}, ext Inter
28412841
28422842 var vv interface {}
28432843 d .decode (& vv )
2844+
28442845 ext .UpdateExt (v , vv )
28452846
28462847}
28472848
28482849func (d * decoderBincBytes ) fn (t reflect.Type ) * decFnBincBytes {
2849- return d .dh .decFnViaBH (t , d .rtidFn , d .h , d .fp , false )
2850+ return d .dh .decFnViaBH (t , d .rtidFn , d .h , d .fp , true )
28502851}
28512852
28522853func (d * decoderBincBytes ) fnNoExt (t reflect.Type ) * decFnBincBytes {
2853- return d .dh .decFnViaBH (t , d .rtidFnNoExt , d .h , d .fp , true )
2854+ return d .dh .decFnViaBH (t , d .rtidFnNoExt , d .h , d .fp , false )
28542855}
28552856
28562857func (helperDecDriverBincBytes ) newDecoderBytes (in []byte , h Handle ) * decoderBincBytes {
@@ -3225,7 +3226,7 @@ func (e *bincEncDriverBytes) EncodeExt(v interface{}, basetype reflect.Type, xta
32253226 if ext == SelfExt {
32263227 bs0 = e .e .blist .get (1024 )
32273228 bs = bs0
3228- sideEncode (e .h , & e .h .sideEncPool , func (se encoderI ) { oneOffEncode (se , v , & bs , basetype , true ) })
3229+ sideEncode (e .h , & e .h .sideEncPool , func (se encoderI ) { oneOffEncode (se , v , & bs , basetype , false ) })
32293230 } else {
32303231 bs = ext .WriteExt (v )
32313232 }
@@ -3796,7 +3797,7 @@ func (d *bincDecDriverBytes) DecodeExt(rv interface{}, basetype reflect.Type, xt
37963797 return
37973798 }
37983799 if ext == SelfExt {
3799- sideDecode (d .h , & d .h .sideDecPool , func (sd decoderI ) { oneOffDecode (sd , rv , xbs , basetype , true ) })
3800+ sideDecode (d .h , & d .h .sideDecPool , func (sd decoderI ) { oneOffDecode (sd , rv , xbs , basetype , false ) })
38003801 } else {
38013802 ext .ReadExt (rv , xbs )
38023803 }
@@ -5206,11 +5207,11 @@ func (e *encoderBincIO) rawBytes(vv Raw) {
52065207}
52075208
52085209func (e * encoderBincIO ) fn (t reflect.Type ) * encFnBincIO {
5209- return e .dh .encFnViaBH (t , e .rtidFn , e .h , e .fp , false )
5210+ return e .dh .encFnViaBH (t , e .rtidFn , e .h , e .fp , true )
52105211}
52115212
52125213func (e * encoderBincIO ) fnNoExt (t reflect.Type ) * encFnBincIO {
5213- return e .dh .encFnViaBH (t , e .rtidFnNoExt , e .h , e .fp , true )
5214+ return e .dh .encFnViaBH (t , e .rtidFnNoExt , e .h , e .fp , false )
52145215}
52155216
52165217func (e * encoderBincIO ) mapStart (length int ) {
@@ -5684,7 +5685,7 @@ func (d *decoderBincIO) kInterfaceNaked(f *decFnInfo) (rvn reflect.Value) {
56845685 } else {
56855686 rvn = reflect .New (bfn .rt )
56865687 if bfn .ext == SelfExt {
5687- sideDecode (d .hh , & d .h .sideDecPool , func (sd decoderI ) { oneOffDecode (sd , rv2i (rvn ), bytes , bfn .rt , true ) })
5688+ sideDecode (d .hh , & d .h .sideDecPool , func (sd decoderI ) { oneOffDecode (sd , rv2i (rvn ), bytes , bfn .rt , false ) })
56885689 } else {
56895690 bfn .ext .ReadExt (rv2i (rvn ), bytes )
56905691 }
@@ -6910,16 +6911,17 @@ func (d *decoderBincIO) interfaceExtConvertAndDecode(v interface{}, ext Interfac
69106911
69116912 var vv interface {}
69126913 d .decode (& vv )
6914+
69136915 ext .UpdateExt (v , vv )
69146916
69156917}
69166918
69176919func (d * decoderBincIO ) fn (t reflect.Type ) * decFnBincIO {
6918- return d .dh .decFnViaBH (t , d .rtidFn , d .h , d .fp , false )
6920+ return d .dh .decFnViaBH (t , d .rtidFn , d .h , d .fp , true )
69196921}
69206922
69216923func (d * decoderBincIO ) fnNoExt (t reflect.Type ) * decFnBincIO {
6922- return d .dh .decFnViaBH (t , d .rtidFnNoExt , d .h , d .fp , true )
6924+ return d .dh .decFnViaBH (t , d .rtidFnNoExt , d .h , d .fp , false )
69236925}
69246926
69256927func (helperDecDriverBincIO ) newDecoderBytes (in []byte , h Handle ) * decoderBincIO {
@@ -7294,7 +7296,7 @@ func (e *bincEncDriverIO) EncodeExt(v interface{}, basetype reflect.Type, xtag u
72947296 if ext == SelfExt {
72957297 bs0 = e .e .blist .get (1024 )
72967298 bs = bs0
7297- sideEncode (e .h , & e .h .sideEncPool , func (se encoderI ) { oneOffEncode (se , v , & bs , basetype , true ) })
7299+ sideEncode (e .h , & e .h .sideEncPool , func (se encoderI ) { oneOffEncode (se , v , & bs , basetype , false ) })
72987300 } else {
72997301 bs = ext .WriteExt (v )
73007302 }
@@ -7865,7 +7867,7 @@ func (d *bincDecDriverIO) DecodeExt(rv interface{}, basetype reflect.Type, xtag
78657867 return
78667868 }
78677869 if ext == SelfExt {
7868- sideDecode (d .h , & d .h .sideDecPool , func (sd decoderI ) { oneOffDecode (sd , rv , xbs , basetype , true ) })
7870+ sideDecode (d .h , & d .h .sideDecPool , func (sd decoderI ) { oneOffDecode (sd , rv , xbs , basetype , false ) })
78697871 } else {
78707872 ext .ReadExt (rv , xbs )
78717873 }
0 commit comments