diff options
Diffstat (limited to 'src/zenserver/frontend/html/util')
| -rw-r--r-- | src/zenserver/frontend/html/util/compactbinary.js | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/zenserver/frontend/html/util/compactbinary.js b/src/zenserver/frontend/html/util/compactbinary.js index 270c96a2f..bd5bf95b3 100644 --- a/src/zenserver/frontend/html/util/compactbinary.js +++ b/src/zenserver/frontend/html/util/compactbinary.js @@ -334,7 +334,7 @@ CbFieldView.prototype.clone = function() { const ret = new CbFieldView() ret._type = this._type; - ret._name = ret._name; + ret._name = this._name; ret._data_view = new Uint8Array(this._data_view); return ret; } @@ -352,8 +352,10 @@ CbObjectView.prototype[Symbol.iterator] = function() var data_view = this.get_payload(); const [payload_size, varint_len] = VarInt.read_uint(data_view); + // Empty object — return a proper empty iterator, not a bare `{}` which + // would crash `for...of` with "undefined is not a function". if (payload_size == 0) - return {}; + return [][Symbol.iterator](); data_view = data_view.subarray(varint_len, payload_size + varint_len); var uniform_type = CbFieldType.HasFieldType; @@ -467,8 +469,10 @@ CbArrayView.prototype[Symbol.iterator] = function() data_view = data_view.subarray(varint_len, payload_size + varint_len); const item_count_bytes = VarInt.measure(data_view); + // Empty array — return a proper empty iterator, not a bare `{}` which + // would crash `for...of` with "undefined is not a function". if (item_count_bytes >= payload_size) - return {}; + return [][Symbol.iterator](); data_view = data_view.subarray(item_count_bytes); var uniform_type = CbFieldType.HasFieldType; |