From ddc19be6de1ba263d9c175b2760696e7b9918b25 Mon Sep 17 00:00:00 2001 From: Trevor Norris Date: Sat, 16 Apr 2016 03:07:25 -0600 Subject: [PATCH] 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 Reviewed-By: Anna Henningsen --- src/js_stream.cc | 4 ++-- src/js_stream.h | 2 +- src/node_crypto.h | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/js_stream.cc b/src/js_stream.cc index e81709a8056965..6ebdb5a3564136 100644 --- a/src/js_stream.cc +++ b/src/js_stream.cc @@ -22,8 +22,8 @@ using v8::Value; JSStream::JSStream(Environment* env, Local 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(this); } diff --git a/src/js_stream.h b/src/js_stream.h index 1a8902af466d87..08d1604ac5360f 100644 --- a/src/js_stream.h +++ b/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 target, v8::Local unused, diff --git a/src/node_crypto.h b/src/node_crypto.h index 01c16b39b516c9..28cee7a4928e22 100644 --- a/src/node_crypto.h +++ b/src/node_crypto.h @@ -322,7 +322,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, public AsyncWrap { +class Connection : public AsyncWrap, public SSLWrap { public: ~Connection() override { #ifdef SSL_CTRL_SET_TLSEXT_SERVERNAME_CB @@ -387,8 +387,8 @@ class Connection : public SSLWrap, public AsyncWrap { v8::Local wrap, SecureContext* sc, SSLWrap::Kind kind) - : SSLWrap(env, sc, kind), - AsyncWrap(env, wrap, AsyncWrap::PROVIDER_CRYPTO), + : AsyncWrap(env, wrap, AsyncWrap::PROVIDER_CRYPTO), + SSLWrap(env, sc, kind), bio_read_(nullptr), bio_write_(nullptr), hello_offset_(0) {