1f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// found in the LICENSE file. 4f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 5f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "scoped_refptr.h" 6f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 7f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct Foo { 8f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch int dummy; 9f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 10f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 11f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// An example of an unsafe conversion, where the object is freed by the time the 12f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// function returns. 13f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochscoped_refptr<Foo> GetBuggyFoo(); 14f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 15f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochscoped_refptr<Foo> GetBuggyFoo() { 16f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch scoped_refptr<Foo> unsafe(new Foo); 17f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return unsafe; 18f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 19