aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/frontend/html/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenserver/frontend/html/util')
-rw-r--r--src/zenserver/frontend/html/util/compactbinary.js10
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;