summaryrefslogtreecommitdiff
path: root/lib/v8.js
diff options
context:
space:
mode:
authorRajaram Gaunker <zimbabao@gmail.com>2017-06-08 01:17:02 -0700
committerAnna Henningsen <anna@addaleax.net>2017-06-12 14:08:49 +0200
commit12fd63d6bb38d4fbd41dc4dd8d1b106ee64d1f7c (patch)
treed81f459b6bfe61059855336305e24c8b1a553f8f /lib/v8.js
parente2617a03888aed62965ebc208f13e1bb3e183aeb (diff)
downloadandroid-node-v8-12fd63d6bb38d4fbd41dc4dd8d1b106ee64d1f7c.tar.gz
android-node-v8-12fd63d6bb38d4fbd41dc4dd8d1b106ee64d1f7c.tar.bz2
android-node-v8-12fd63d6bb38d4fbd41dc4dd8d1b106ee64d1f7c.zip
v8: add a js class for Serializer/Dserializer
Calling Serializer/Deserializer without new crashes node. Adding a js class which just inherits cpp bindings. Added regression tests. Fixes: https://github.com/nodejs/node/issues/13326 PR-URL: https://github.com/nodejs/node/pull/13541 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'lib/v8.js')
-rw-r--r--lib/v8.js12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/v8.js b/lib/v8.js
index e5b31564ad..ba95c98dad 100644
--- a/lib/v8.js
+++ b/lib/v8.js
@@ -15,11 +15,21 @@
'use strict';
const { Buffer } = require('buffer');
-const { Serializer, Deserializer } = process.binding('serdes');
+const {
+ Serializer: _Serializer,
+ Deserializer: _Deserializer
+} = process.binding('serdes');
const { copy } = process.binding('buffer');
const { objectToString } = require('internal/util');
const { FastBuffer } = require('internal/buffer');
+// Calling exposed c++ functions directly throws exception as it expected to be
+// called with new operator and caused an assert to fire.
+// Creating JS wrapper so that it gets caught at JS layer.
+class Serializer extends _Serializer { }
+
+class Deserializer extends _Deserializer { }
+
const {
cachedDataVersionTag,
setFlagsFromString,