1eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// Copyright (c) 2008, Google Inc. 2eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// All rights reserved. 3eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// 4eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// Redistribution and use in source and binary forms, with or without 5eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// modification, are permitted provided that the following conditions are 6eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// met: 7eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// 8eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// * Redistributions of source code must retain the above copyright 9eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// notice, this list of conditions and the following disclaimer. 10eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// * Redistributions in binary form must reproduce the above 11eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// copyright notice, this list of conditions and the following disclaimer 12eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// in the documentation and/or other materials provided with the 13eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// distribution. 14eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// * Neither the name of Google Inc. nor the names of its 15eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// contributors may be used to endorse or promote products derived from 16eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// this software without specific prior written permission. 17eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// 18eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai 30a91e414f841dedc96efcae583f2fee6067fc637ferikwright@chromium.org#include "client/windows/tests/crash_generation_app/abstract_class.h" 31eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai 32eeca9921c563d802cccc5593bf55dcb7683e7250mmentovainamespace google_breakpad { 33eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai 34eeca9921c563d802cccc5593bf55dcb7683e7250mmentovaiBase::Base(Derived* derived) 35eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai : derived_(derived) { 36eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai} 37eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai 38eeca9921c563d802cccc5593bf55dcb7683e7250mmentovaiBase::~Base() { 39eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai derived_->DoSomething(); 40eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai} 41eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai 42eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai#pragma warning(push) 43eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai#pragma warning(disable:4355) 44eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai// Disable warning C4355: 'this' : used in base member initializer list. 45eeca9921c563d802cccc5593bf55dcb7683e7250mmentovaiDerived::Derived() 46eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai : Base(this) { // C4355 47eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai} 48eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai#pragma warning(pop) 49eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai 50eeca9921c563d802cccc5593bf55dcb7683e7250mmentovaivoid Derived::DoSomething() { 51eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai} 52eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai 53eeca9921c563d802cccc5593bf55dcb7683e7250mmentovai} // namespace google_breakpad 54