Index: content/renderer/pepper/pepper_try_catch.h |
diff --git a/content/renderer/pepper/pepper_try_catch.h b/content/renderer/pepper/pepper_try_catch.h |
index dba90aa780a8be427c47900f42ab5af304a4e9a3..819d26926e33ec9cf932e909b7440bbbab2c4f14 100644 |
--- a/content/renderer/pepper/pepper_try_catch.h |
+++ b/content/renderer/pepper/pepper_try_catch.h |
@@ -19,6 +19,8 @@ class PepperPluginInstanceImpl; |
// Base class for scripting TryCatch helpers. |
class CONTENT_EXPORT PepperTryCatch { |
public: |
+ // PepperTryCatch objects should only be used as stack variables. This object |
+ // takes a reference on the given PepperPluginInstanceImpl. |
PepperTryCatch(PepperPluginInstanceImpl* instance, |
V8VarConverter::AllowObjectVars convert_objects); |
virtual ~PepperTryCatch(); |
@@ -34,7 +36,14 @@ class CONTENT_EXPORT PepperTryCatch { |
ppapi::ScopedPPVar FromV8(v8::Handle<v8::Value> v8_value); |
protected: |
- PepperPluginInstanceImpl* instance_; |
+ // Make sure that |instance_| is alive for the lifetime of PepperTryCatch. |
+ // PepperTryCatch is used mostly in Pepper scripting code, where it can be |
+ // possible to enter JavaScript synchronously which can cause the plugin to |
+ // be deleted. |
+ // |
+ // Note that PepperTryCatch objects should only ever be on the stack, so this |
+ // shouldn't keep the instance around for too long. |
+ scoped_refptr<PepperPluginInstanceImpl> instance_; |
// Whether To/FromV8 should convert object vars. If set to |
// kDisallowObjectVars, an exception should be set if they are encountered |