Browse Source

Fix js reader.js's skipGroup

Yilun Chong 7 năm trước cách đây
mục cha
commit
82a4e4e3d3
3 tập tin đã thay đổi với 8 bổ sung8 xóa
  1. 5 7
      js/binary/reader.js
  2. 2 0
      js/binary/reader_test.js
  3. 1 1
      js/package.json

+ 5 - 7
js/binary/reader.js

@@ -389,7 +389,7 @@ jspb.BinaryReader.prototype.skipFixed64Field = function() {
  */
 jspb.BinaryReader.prototype.skipGroup = function() {
   // Keep a stack of start-group tags that must be matched by end-group tags.
-  var nestedGroups = [this.nextField_];
+  var previousField = this.nextField_;
   do {
     if (!this.nextField()) {
       goog.asserts.fail('Unmatched start-group tag: stream EOF');
@@ -397,19 +397,17 @@ jspb.BinaryReader.prototype.skipGroup = function() {
       return;
     }
     if (this.nextWireType_ ==
-        jspb.BinaryConstants.WireType.START_GROUP) {
-      // Nested group start.
-      nestedGroups.push(this.nextField_);
-    } else if (this.nextWireType_ ==
                jspb.BinaryConstants.WireType.END_GROUP) {
       // Group end: check that it matches top-of-stack.
-      if (this.nextField_ != nestedGroups.pop()) {
+      if (this.nextField_ != previousField) {
         goog.asserts.fail('Unmatched end-group tag');
         this.error_ = true;
         return;
       }
+      return;
     }
-  } while (nestedGroups.length > 0);
+    this.skipField();
+  } while (true);
 };
 
 

+ 2 - 0
js/binary/reader_test.js

@@ -680,8 +680,10 @@ describe('binaryReaderTest', function() {
     var dummyMessage = /** @type {!jspb.BinaryMessage} */({});
     writer.writeGroup(5, dummyMessage, function() {
       writer.writeInt64(42, 42);
+      writer.writeString(43, 'The quick brown fox jumps over the lazy dog');
       writer.writeGroup(6, dummyMessage, function() {
         writer.writeInt64(84, 42);
+        writer.writeString(85, 'The quick brown fox jumps over the lazy dog');
       });
     });
 

+ 1 - 1
js/package.json

@@ -22,5 +22,5 @@
     "url": "https://github.com/google/protobuf/tree/master/js"
   },
   "author": "Google Protocol Buffers Team",
-  "license" : "BSD-3-Clause"
+  "license": "BSD-3-Clause"
 }