diff --git a/js/xpconnect/src/xpcprivate.h b/js/xpconnect/src/xpcprivate.h index 8a86ebf2c7c..b576bbdfb52 100644 --- a/js/xpconnect/src/xpcprivate.h +++ b/js/xpconnect/src/xpcprivate.h @@ -1310,12 +1310,13 @@ public: XPCCallContext &GetXPCCallContext() { if (!mCcx) { + XPCCallContext *data = mData.addr(); mCcxToDestroy = mCcx = - new (mData) XPCCallContext(mCallerLanguage, mCx, - mCallBeginRequest == CALL_BEGINREQUEST, - mObj, - mFlattenedJSObject, mWrapper, - mTearOff); + new (data) XPCCallContext(mCallerLanguage, mCx, + mCallBeginRequest == CALL_BEGINREQUEST, + mObj, + mFlattenedJSObject, mWrapper, + mTearOff); if (!mCcx->IsValid()) { NS_ERROR("This is not supposed to fail!"); } @@ -1343,7 +1344,7 @@ private: JSObject *mFlattenedJSObject; XPCWrappedNative *mWrapper; XPCWrappedNativeTearOff *mTearOff; - char mData[sizeof(XPCCallContext)]; + mozilla::AlignedStorage2 mData; }; /***************************************************************************