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