(str, data, len, encoding = 'utf8')
| 193 | } |
| 194 | |
| 195 | function exportString(str, data, len, encoding = 'utf8') { |
| 196 | checkFFIPermission(); |
| 197 | validateString(str, 'string'); |
| 198 | validateString(encoding, 'encoding'); |
| 199 | validateInteger(len, 'len', 0); |
| 200 | |
| 201 | let terminatorSize; |
| 202 | |
| 203 | switch (encoding.toLowerCase()) { |
| 204 | case 'ucs2': |
| 205 | case 'ucs-2': |
| 206 | case 'utf16le': |
| 207 | case 'utf-16le': |
| 208 | terminatorSize = 2; |
| 209 | break; |
| 210 | default: |
| 211 | terminatorSize = 1; |
| 212 | break; |
| 213 | } |
| 214 | |
| 215 | const sourceBuffer = Buffer.from(str, encoding); |
| 216 | const requiredLength = sourceBuffer.length + terminatorSize; |
| 217 | |
| 218 | if (len < requiredLength) { |
| 219 | throw new ERR_OUT_OF_RANGE('len', `>= ${requiredLength}`, len); |
| 220 | } |
| 221 | |
| 222 | const targetBuffer = toBuffer(data, len, false); |
| 223 | const dataLength = sourceBuffer.length; |
| 224 | |
| 225 | sourceBuffer.copy(targetBuffer, 0, 0, dataLength); |
| 226 | targetBuffer.fill(0, dataLength, dataLength + terminatorSize); |
| 227 | } |
| 228 | |
| 229 | function exportBuffer(source, data, len) { |
| 230 | checkFFIPermission(); |
nothing calls this directly
no test coverage detected
searching dependent graphs…