Browse Source

src: inherit first from AsyncWrap

To make sure casting a class of multiple inheritance from a void* to
AsyncWrap succeeds make AsyncWrap the first inherited class.

PR-URL: https://github.com/nodejs/node/pull/6184
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
v4.x
Trevor Norris 9 years ago
committed by Myles Borins
parent
commit
b3149cee8c
  1. 4
      src/js_stream.cc
  2. 2
      src/js_stream.h
  3. 6
      src/node_crypto.h

4
src/js_stream.cc

@ -22,8 +22,8 @@ using v8::Value;
JSStream::JSStream(Environment* env, Local<Object> obj, AsyncWrap* parent)
: StreamBase(env),
AsyncWrap(env, obj, AsyncWrap::PROVIDER_JSSTREAM, parent) {
: AsyncWrap(env, obj, AsyncWrap::PROVIDER_JSSTREAM, parent),
StreamBase(env) {
node::Wrap(obj, this);
MakeWeak<JSStream>(this);
}

2
src/js_stream.h

@ -8,7 +8,7 @@
namespace node {
class JSStream : public StreamBase, public AsyncWrap {
class JSStream : public AsyncWrap, public StreamBase {
public:
static void Initialize(v8::Local<v8::Object> target,
v8::Local<v8::Value> unused,

6
src/node_crypto.h

@ -319,7 +319,7 @@ class SSLWrap {
// Connection inherits from AsyncWrap because SSLWrap makes calls to
// MakeCallback, but SSLWrap doesn't store the handle itself. Instead it
// assumes that any args.This() called will be the handle from Connection.
class Connection : public SSLWrap<Connection>, public AsyncWrap {
class Connection : public AsyncWrap, public SSLWrap<Connection> {
public:
~Connection() override {
#ifdef SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
@ -384,8 +384,8 @@ class Connection : public SSLWrap<Connection>, public AsyncWrap {
v8::Local<v8::Object> wrap,
SecureContext* sc,
SSLWrap<Connection>::Kind kind)
: SSLWrap<Connection>(env, sc, kind),
AsyncWrap(env, wrap, AsyncWrap::PROVIDER_CRYPTO),
: AsyncWrap(env, wrap, AsyncWrap::PROVIDER_CRYPTO),
SSLWrap<Connection>(env, sc, kind),
bio_read_(nullptr),
bio_write_(nullptr),
hello_offset_(0) {

Loading…
Cancel
Save