1f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Copyright (c) 2014 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 562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#include "scoped_refptr.h" 6f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochstruct Foo { 8f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch int dummy; 9f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 10f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 11f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// An example of an unsafe conversion, since the reference is bound to a 12f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// scoped_refptr with local storage. The tool should ignore this, since it 13f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// should prefer letting a human manually resolve trickier cases like this. 14f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochFoo* TestFunction() { 15f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch scoped_refptr<Foo> a; 16f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch scoped_refptr<Foo>& b = a; 17f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return b; 18f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 19