Skip to content

Commit

Permalink
fixup! lib: support returning Safe collections from C++
Browse files Browse the repository at this point in the history
Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
  • Loading branch information
ExE-Boss and aduh95 committed Jan 19, 2021
1 parent ad9b5a5 commit dd0b7a1
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
6 changes: 6 additions & 0 deletions src/node_options.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1011,6 +1011,12 @@ void GetOptions(const FunctionCallbackInfo<Value>& args) {
Local<Value> aliases;
if (!ToV8Value(context, _ppop_instance.aliases_).ToLocal(&aliases)) return;

if (aliases.As<Object>()
->SetPrototype(context, env->primordials_safe_map_prototype_object())
.IsNothing()) {
return;
}

Local<Object> ret = Object::New(isolate);
if (ret->Set(context, env->options_string(), options).IsNothing() ||
ret->Set(context, env->aliases_string(), aliases).IsNothing()) {
Expand Down
13 changes: 9 additions & 4 deletions test/parallel/test-options-binding.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,20 @@
'use strict';

require('../common');
const { internalBinding, primordials } = require('internal/test/binding');
const { primordials } = require('internal/test/binding');
const {
SafeMap,
} = primordials;

const options = internalBinding('options');
const { options, aliases } = require('internal/options');
const assert = require('assert');

assert(
options.getOptions() instanceof SafeMap,
"internalBinding('options').getOptions() returns SafeMap",
options instanceof SafeMap,
"require('internal/options').options is a SafeMap",
);

assert(
aliases instanceof SafeMap,
"require('internal/options').aliases is a SafeMap",
);

0 comments on commit dd0b7a1

Please sign in to comment.