Skip to content

Commit 955a1bb

Browse files
committed
v8: add a js class for Serializer/Deserializer
Calling Serializer/Deserializer without new crashes node. Adding a js class which just inherits cpp bindings. Added regression tests. Fixes: #13326
1 parent 9643c6c commit 955a1bb

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

lib/v8.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,20 @@
1515
'use strict';
1616

1717
const { Buffer } = require('buffer');
18-
const serdesBindings = process.binding('serdes');
18+
const {
19+
Serializer: _Serializer,
20+
Deserializer: _Deserializer
21+
} = process.binding('serdes');
1922
const { copy } = process.binding('buffer');
2023
const { objectToString } = require('internal/util');
2124
const { FastBuffer } = require('internal/buffer');
2225

23-
class Serializer extends serdesBindings.Serializer {}
26+
// Calling exposed c++ functions directly throws exception as it expected to be
27+
// called with new operator and caused an assert to fire.
28+
// Creating JS wrapper so that it gets caught at JS layer.
29+
class Serializer extends _Serializer { }
2430

25-
class Deserializer extends serdesBindings.Deserializer {}
31+
class Deserializer extends _Deserializer { }
2632

2733
const {
2834
cachedDataVersionTag,

0 commit comments

Comments
 (0)