@@ -35,15 +35,17 @@ function encoder(mtype) {
3535
3636 var i , ref ;
3737 for ( var i = 0 ; i < fields . length ; ++ i ) {
38- var field = fields [ i ] . resolve ( ) ,
39- type = field . resolvedType instanceof Enum ? "uint32" : field . type ,
38+ var field = fields [ i ] . resolve ( ) ;
39+ if ( field . partOf ) // see below for oneofs
40+ continue ;
41+ var type = field . resolvedType instanceof Enum ? "uint32" : field . type ,
4042 wireType = types . basic [ type ] ;
4143 ref = "m" + field . _prop ;
4244
4345 // Map fields
4446 if ( field . map ) {
4547 var keyType = field . resolvedKeyType /* only valid is enum */ ? "uint32" : field . keyType ; gen
46- ( "if(%s &&%s!==util.emptyObject ){" , ref , ref )
48+ ( "if(m.hasOwnProperty(%j) &&%s){" , field . name , ref )
4749 ( "for(var ks=Object.keys(%s),i=0;i<ks.length;++i){" , ref )
4850 ( "w.uint32(%d).fork().uint32(%d).%s(ks[i])" , ( field . id << 3 | 2 ) >>> 0 , 8 | types . mapKey [ keyType ] , keyType ) ;
4951 if ( wireType === undefined ) gen
@@ -60,7 +62,7 @@ function encoder(mtype) {
6062 // Packed repeated
6163 if ( field . packed && types . packed [ type ] !== undefined ) { gen
6264
63- ( "if(%s &&%s.length){" , ref , ref )
65+ ( "if(m.hasOwnProperty(%j) &&%s.length){" , field . name , ref )
6466 ( "w.uint32(%d).fork()" , ( field . id << 3 | 2 ) >>> 0 )
6567 ( "for(var i=0;i<%s.length;++i)" , ref )
6668 ( "w.%s(%s[i])" , type , ref )
@@ -70,7 +72,7 @@ function encoder(mtype) {
7072 // Non-packed
7173 } else { gen
7274
73- ( "if(%s) {" , ref )
75+ ( "if(m.hasOwnProperty(%j)) {" , field . name )
7476 ( "for(var i=0;i<%s.length;++i)" , ref ) ;
7577 if ( wireType === undefined )
7678 genTypePartial ( gen , field , i , ref + "[i]" ) ;
@@ -82,18 +84,18 @@ function encoder(mtype) {
8284 }
8385
8486 // Non-repeated
85- } else if ( ! field . partOf ) { // see below for oneofs
87+ } else {
8688 if ( ! field . required ) {
8789
8890 if ( field . long ) gen
89- ( "if(% s!==undefined&&%s!==null&&util.longNe(%s,%d,%d)) " , ref , ref , ref , field . defaultValue . low , field . defaultValue . high ) ;
91+ ( "if(m.hasOwnProperty(%j)&&% s!==undefined&&%s!==null) " , field . name , ref , ref ) ;
9092 else if ( field . bytes ) gen
91- ( "if(%s&&%s.length" + ( field . defaultValue . length ? "&&util.arrayNe(%s,%j)" : "" ) + ")" , ref , ref , ref , Array . prototype . slice . call ( field . defaultValue ) ) ;
93+ ( "if(m.hasOwnProperty(%j)&&%s)" , field . name , ref ) ;
9294 else gen
93- ( "if(%s!==undefined &&%s!==%j )" , ref , ref , field . defaultValue ) ;
95+ ( "if(m.hasOwnProperty(%j) &&%s!==undefined )" , field . name , ref ) ;
9496
9597 }
96-
98+
9799 if ( wireType === undefined )
98100 genTypePartial ( gen , field , i , ref ) ;
99101 else gen
0 commit comments