33
44auto ArrayType = napi_uint8_array;
55
6- napi_status NAPI_CDECL callstack::nodeapihost::napi_create_buffer (
6+ namespace callstack ::nodeapihost {
7+
8+ napi_status napi_create_buffer (
79 napi_env env, size_t length, void ** data, napi_value* result) {
810 napi_value buffer;
9- const auto status = napi_create_arraybuffer (env, length, data, &buffer);
10- if ( status != napi_ok) {
11+ if ( const auto status = napi_create_arraybuffer (env, length, data, &buffer);
12+ status != napi_ok) {
1113 return status;
1214 }
1315
@@ -18,8 +20,7 @@ napi_status NAPI_CDECL callstack::nodeapihost::napi_create_buffer(
1820 return napi_create_typedarray (env, ArrayType, length, buffer, 0 , result);
1921}
2022
21- napi_status NAPI_CDECL callstack::nodeapihost::napi_create_buffer_copy (
22- napi_env env,
23+ napi_status napi_create_buffer_copy (napi_env env,
2324 size_t length,
2425 const void * data,
2526 void ** result_data,
@@ -38,8 +39,7 @@ napi_status NAPI_CDECL callstack::nodeapihost::napi_create_buffer_copy(
3839 return napi_ok;
3940}
4041
41- napi_status callstack::nodeapihost::napi_is_buffer (
42- napi_env env, napi_value value, bool * result) {
42+ napi_status napi_is_buffer (napi_env env, napi_value value, bool * result) {
4343 if (!result) {
4444 return napi_invalid_arg;
4545 }
@@ -74,7 +74,7 @@ napi_status callstack::nodeapihost::napi_is_buffer(
7474 return napi_ok;
7575}
7676
77- napi_status callstack::nodeapihost:: napi_get_buffer_info (
77+ napi_status napi_get_buffer_info (
7878 napi_env env, napi_value value, void ** data, size_t * length) {
7979 if (!data || !length) {
8080 return napi_invalid_arg;
@@ -101,12 +101,24 @@ napi_status callstack::nodeapihost::napi_get_buffer_info(
101101 return napi_ok;
102102}
103103
104- napi_status callstack::nodeapihost:: napi_create_external_buffer (napi_env env,
104+ napi_status napi_create_external_buffer (napi_env env,
105105 size_t length,
106106 void * data,
107107 node_api_basic_finalize basic_finalize_cb,
108108 void * finalize_hint,
109109 napi_value* result) {
110- return napi_create_external_arraybuffer (
111- env, data, length, basic_finalize_cb, finalize_hint, result);
110+ napi_value buffer;
111+ if (const auto status = napi_create_external_arraybuffer (
112+ env, data, length, basic_finalize_cb, finalize_hint, &buffer);
113+ status != napi_ok) {
114+ return status;
115+ }
116+
117+ // Warning: The returned data structure does not fully align with the
118+ // characteristics of a Buffer.
119+ // @see
120+ // https://github.com/callstackincubator/react-native-node-api/issues/171
121+ return napi_create_typedarray (env, ArrayType, length, buffer, 0 , result);
112122}
123+
124+ } // namespace callstack::nodeapihost
0 commit comments