@@ -1951,52 +1951,74 @@ napi_status napi_get_and_clear_last_exception(napi_env e, napi_value* result) {
19511951 return napi_ok;
19521952}
19531953
1954- napi_status napi_buffer_new (napi_env e, char * data, size_t size, napi_value* result) {
1954+ napi_status napi_create_buffer (napi_env e, size_t size, char ** data,
1955+ napi_value* result) {
19551956 NAPI_PREAMBLE (e);
1957+ CHECK_ARG (data);
19561958 CHECK_ARG (result);
19571959
1958- auto maybe = node::Buffer::New (v8impl::V8IsolateFromJsEnv (e), data, size);
1960+ auto maybe = node::Buffer::New (v8impl::V8IsolateFromJsEnv (e), size);
19591961
19601962 CHECK_MAYBE_EMPTY (maybe, napi_generic_failure);
19611963
1962- *result = v8impl::JsValueFromV8LocalValue (maybe.ToLocalChecked ());
1964+ v8::Local<v8::Object> jsBuffer = maybe.ToLocalChecked ();
1965+
1966+ *result = v8impl::JsValueFromV8LocalValue (jsBuffer);
1967+ *data = node::Buffer::Data (jsBuffer);
1968+
19631969 return GET_RETURN_STATUS ();
19641970}
19651971
1966- napi_status napi_buffer_copy (napi_env e, const char * data,
1967- size_t size, napi_value* result) {
1972+ napi_status napi_create_external_buffer (napi_env e, size_t size, char * data,
1973+ napi_finalize finalize_cb,
1974+ napi_value* result) {
19681975 NAPI_PREAMBLE (e);
19691976 CHECK_ARG (result);
19701977
1971- auto maybe = node::Buffer::Copy (v8impl::V8IsolateFromJsEnv (e), data, size);
1978+ auto maybe = node::Buffer::New (v8impl::V8IsolateFromJsEnv (e), data, size,
1979+ (node::Buffer::FreeCallback)finalize_cb, nullptr );
19721980
19731981 CHECK_MAYBE_EMPTY (maybe, napi_generic_failure);
19741982
19751983 *result = v8impl::JsValueFromV8LocalValue (maybe.ToLocalChecked ());
19761984 return GET_RETURN_STATUS ();
19771985}
19781986
1979- napi_status napi_buffer_has_instance (napi_env e, napi_value v, bool * result) {
1987+ napi_status napi_create_buffer_copy (napi_env e, const char * data,
1988+ size_t size, napi_value* result) {
19801989 NAPI_PREAMBLE (e);
19811990 CHECK_ARG (result);
19821991
1983- *result = node::Buffer::HasInstance (v8impl::V8LocalValueFromJsValue (v));
1992+ auto maybe = node::Buffer::Copy (v8impl::V8IsolateFromJsEnv (e), data, size);
1993+
1994+ CHECK_MAYBE_EMPTY (maybe, napi_generic_failure);
1995+
1996+ *result = v8impl::JsValueFromV8LocalValue (maybe.ToLocalChecked ());
19841997 return GET_RETURN_STATUS ();
19851998}
19861999
1987- napi_status napi_buffer_data (napi_env e, napi_value v, char * * result) {
2000+ napi_status napi_is_buffer (napi_env e, napi_value v, bool * result) {
19882001 NAPI_PREAMBLE (e);
19892002 CHECK_ARG (result);
19902003
1991- *result = node::Buffer::Data (v8impl::V8LocalValueFromJsValue (v). As <v8::Object>( ));
2004+ *result = node::Buffer::HasInstance (v8impl::V8LocalValueFromJsValue (v));
19922005 return GET_RETURN_STATUS ();
19932006}
19942007
1995- napi_status napi_buffer_length (napi_env e, napi_value v, size_t * result) {
2008+ napi_status napi_get_buffer_info (napi_env e, napi_value v, char ** data,
2009+ size_t * length) {
19962010 NAPI_PREAMBLE (e);
1997- CHECK_ARG (result);
19982011
1999- *result = node::Buffer::Length (v8impl::V8LocalValueFromJsValue (v));
2012+ v8::Local<v8::Object> buffer =
2013+ v8impl::V8LocalValueFromJsValue (v).As <v8::Object>();
2014+
2015+ if (data) {
2016+ *data = node::Buffer::Data (buffer);
2017+ }
2018+ if (length) {
2019+ *length = node::Buffer::Length (buffer);
2020+ }
2021+
20002022 return GET_RETURN_STATUS ();
20012023}
20022024
0 commit comments