Skip to content

Commit 13a3b21

Browse files
authored
Use bytes instead of string length (#461)
* Use bytes instead of str length * Use private instead of private static
1 parent 628fc0a commit 13a3b21

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

sdk_v2/js/src/detail/coreInterop.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ export class CoreInterop {
6969
return null;
7070
}
7171

72+
private _toBytes(str: string): Uint8Array {
73+
return new TextEncoder().encode(str);
74+
}
75+
7276
constructor(config: Configuration) {
7377
const corePath = config.params['FoundryLocalCorePath'] || CoreInterop._resolveDefaultCorePath(config);
7478

@@ -96,14 +100,15 @@ export class CoreInterop {
96100
koffi.encode(cmdBuf, 'char', command, command.length + 1);
97101

98102
const dataStr = params ? JSON.stringify(params) : '';
99-
const dataBuf = koffi.alloc('char', dataStr.length + 1);
100-
koffi.encode(dataBuf, 'char', dataStr, dataStr.length + 1);
103+
const dataBytes = this._toBytes(dataStr);
104+
const dataBuf = koffi.alloc('char', dataBytes.length + 1);
105+
koffi.encode(dataBuf, 'char', dataStr, dataBytes.length + 1);
101106

102107
const req = {
103108
Command: koffi.address(cmdBuf),
104109
CommandLength: command.length,
105110
Data: koffi.address(dataBuf),
106-
DataLength: dataStr.length
111+
DataLength: dataBytes.length
107112
};
108113
const res = { Data: 0, DataLength: 0, Error: 0, ErrorLength: 0 };
109114

@@ -129,8 +134,9 @@ export class CoreInterop {
129134
koffi.encode(cmdBuf, 'char', command, command.length + 1);
130135

131136
const dataStr = params ? JSON.stringify(params) : '';
132-
const dataBuf = koffi.alloc('char', dataStr.length + 1);
133-
koffi.encode(dataBuf, 'char', dataStr, dataStr.length + 1);
137+
const dataBytes = this._toBytes(dataStr);
138+
const dataBuf = koffi.alloc('char', dataBytes.length + 1);
139+
koffi.encode(dataBuf, 'char', dataStr, dataBytes.length + 1);
134140

135141
const cb = koffi.register((data: any, length: number, userData: any) => {
136142
const chunk = koffi.decode(data, 'char', length);
@@ -142,7 +148,7 @@ export class CoreInterop {
142148
Command: koffi.address(cmdBuf),
143149
CommandLength: command.length,
144150
Data: koffi.address(dataBuf),
145-
DataLength: dataStr.length
151+
DataLength: dataBytes.length
146152
};
147153
const res = { Data: 0, DataLength: 0, Error: 0, ErrorLength: 0 };
148154

0 commit comments

Comments
 (0)