@@ -229,7 +229,7 @@ converter.toObject = function toObject(mtype) {
229229
230230 if ( normalFields . length ) { gen
231231 ( "if(o.defaults){" ) ;
232- for ( i = 0 , field ; i < normalFields . length ; ++ i ) {
232+ for ( i = 0 ; i < normalFields . length ; ++ i ) {
233233 var field = normalFields [ i ] ,
234234 prop = util . safeProp ( field . name ) ;
235235 if ( field . resolvedType instanceof Enum ) gen
@@ -247,25 +247,30 @@ converter.toObject = function toObject(mtype) {
247247 } gen
248248 ( "}" ) ;
249249 }
250- for ( i = 0 , field ; i < fields . length ; ++ i ) {
250+ for ( i = 0 ; i < fields . length ; ++ i ) {
251251 var field = fields [ i ] ,
252- prop = util . safeProp ( field . name ) ; gen
253- ( "if(m%s!==undefined&&m%s!==null&&m.hasOwnProperty(%j)){" , prop , prop , field . name ) ;
252+ index = mtype . _fieldsArray . indexOf ( field ) ,
253+ prop = util . safeProp ( field . name ) ;
254254 if ( field . map ) { gen
255+ ( "var ks2" )
256+ ( "if(m%s&&(ks2=Object.keys(m%s)).length){" , prop , prop )
255257 ( "d%s={}" , prop )
256- ( "for(var ks2=Object.keys(m%s), j=0;j<ks2.length;++j){" , prop ) ;
257- genValuePartial_toObject ( gen , field , /* sorted */ mtype . _fieldsArray . indexOf ( field ) , prop + "[ks2[j]]" )
258+ ( "for(var j=0;j<ks2.length;++j){" ) ;
259+ genValuePartial_toObject ( gen , field , /* sorted */ index , prop + "[ks2[j]]" )
258260 ( "}" ) ;
259261 } else if ( field . repeated ) { gen
262+ ( "if(m%s&&m%s.length){" , prop , prop )
260263 ( "d%s=[]" , prop )
261264 ( "for(var j=0;j<m%s.length;++j){" , prop ) ;
262- genValuePartial_toObject ( gen , field , /* sorted */ mtype . _fieldsArray . indexOf ( field ) , prop + "[j]" )
265+ genValuePartial_toObject ( gen , field , /* sorted */ index , prop + "[j]" )
263266 ( "}" ) ;
264- } else
265- genValuePartial_toObject ( gen , field , /* sorted */ mtype . _fieldsArray . indexOf ( field ) , prop ) ;
267+ } else { gen
268+ ( "if(m%s!==undefined&&m%s!==null&&m.hasOwnProperty(%j)){" , prop , prop , field . name ) ;
269+ genValuePartial_toObject ( gen , field , /* sorted */ index , prop ) ;
266270 if ( field . partOf ) gen
267271 ( "if(o.oneofs)" )
268272 ( "d%s=%j" , util . safeProp ( field . partOf . name ) , field . name ) ;
273+ }
269274 gen
270275 ( "}" ) ;
271276 }
0 commit comments