MCPcopy Index your code
hub / github.com/nodejs/node / getStringConversionPointer

Function getStringConversionPointer

lib/internal/ffi/fast-api.js:82–118  ·  view source on GitHub ↗
(owner, value, index)

Source from the content-addressed store, hash-verified

80}
81
82function getStringConversionPointer(owner, value, index) {
83 const size = value.length * 3 + 1;
84 let buffers = owner[kStringConversionBuffer];
85 if (buffers === undefined) {
86 buffers = [];
87 ObjectDefineProperty(owner, kStringConversionBuffer, {
88 __proto__: null,
89 configurable: false,
90 enumerable: false,
91 writable: false,
92 value: buffers,
93 });
94 }
95 let entry = buffers[index];
96 if (entry !== undefined && entry.string === value) {
97 return entry.pointer;
98 }
99 if (StringPrototypeIncludes(value, '\0')) {
100 throwFFIArgError(`Argument ${index} must not contain null bytes`);
101 }
102 if (entry === undefined || entry.buffer.length < size) {
103 const buffer = Buffer.allocUnsafe(size);
104 entry = {
105 __proto__: null,
106 buffer,
107 pointer: getRawPointer(buffer),
108 string: undefined,
109 };
110 buffers[index] = entry;
111 }
112
113 const buffer = entry.buffer;
114 const written = buffer.write(value, 0, size - 1, 'utf8');
115 buffer[written] = 0;
116 entry.string = value;
117 return entry.pointer;
118}
119
120function convertPointerArg(type, value, owner, index) {
121 if (needsNullPointerConversion(type) &&

Callers 2

convertPointerArgFunction · 0.85

Calls 2

throwFFIArgErrorFunction · 0.70
writeMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…