Skip to content

Commit 4431eef

Browse files
authored
Allow JSON stringified buffers to be converted to Buffer when serializing (#124)
* compiler-utils: Allow json to be converted to Buffer object Allows JSON stringified buffers to be converted to Buffer when serializing * add buffer conversion to interpreter
1 parent 65d5ec8 commit 4431eef

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

src/datatypes/compiler-utils.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ module.exports = {
7878
return compiler.wrapCode(code)
7979
}],
8080
buffer: ['parametrizable', (compiler, buffer) => {
81-
let code = ''
81+
let code = 'if (!(value instanceof Buffer)) value = Buffer.from(value)\n'
8282
if (buffer.countType) {
8383
code += 'offset = ' + compiler.callType('value.length', buffer.countType) + '\n'
8484
} else if (buffer.count === null) {
@@ -135,7 +135,7 @@ module.exports = {
135135
return compiler.wrapCode(code)
136136
}],
137137
buffer: ['parametrizable', (compiler, buffer) => {
138-
let code = 'let size = value.length\n'
138+
let code = 'let size = value instanceof Buffer ? value.length : Buffer.from(value).length\n'
139139
if (buffer.countType) {
140140
code += 'size += ' + compiler.callType('size', buffer.countType) + '\n'
141141
} else if (buffer.count === null) {

src/datatypes/utils.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,14 @@ function readBuffer (buffer, offset, typeArgs, rootNode) {
154154
}
155155

156156
function writeBuffer (value, buffer, offset, typeArgs, rootNode) {
157+
if (!(value instanceof Buffer)) value = Buffer.from(value)
157158
offset = sendCount.call(this, value.length, buffer, offset, typeArgs, rootNode)
158159
value.copy(buffer, offset)
159160
return offset + value.length
160161
}
161162

162163
function sizeOfBuffer (value, typeArgs, rootNode) {
164+
if (!(value instanceof Buffer)) value = Buffer.from(value)
163165
const size = calcCount.call(this, value.length, typeArgs, rootNode)
164166
return size + value.length
165167
}

0 commit comments

Comments
 (0)