gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/avm2 r9676: Fix segfault in GETPROPERTY op


From: Tom Stellard
Subject: [Gnash-commit] /srv/bzr/gnash/avm2 r9676: Fix segfault in GETPROPERTY opcode.
Date: Thu, 13 Nov 2008 23:04:04 +0800
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 9676
committer: Tom Stellard <address@hidden>
branch nick: gnash_dev
timestamp: Thu 2008-11-13 23:04:04 +0800
message:
  Fix segfault in GETPROPERTY opcode.
modified:
  libcore/vm/Machine.cpp
=== modified file 'libcore/vm/Machine.cpp'
--- a/libcore/vm/Machine.cpp    2008-11-11 21:16:36 +0000
+++ b/libcore/vm/Machine.cpp    2008-11-13 15:04:04 +0000
@@ -1617,7 +1617,7 @@
 /// NB: See 0x61 (ABC_ACTION_SETPROPETY) for the decision of ns/key.
        case SWF::ABC_ACTION_GETPROPERTY:
        {
-               as_value val;
+               as_value prop;
                string_table::key ns = 0;
                string_table::key name = 0;
                asName a = pool_name(mStream->read_V32(), mPoolObject);
@@ -1630,12 +1630,20 @@
                        name = a.getGlobalName();
                }
 
-               as_value obj = pop_stack();
-
-               if(!obj.is_undefined() && !obj.is_null()){
-                       obj.to_object().get()->get_member(name, &val, ns);
-               }
-               push_stack(val);
+               as_value object_val = pop_stack();
+
+               as_object* object = object_val.to_object().get();
+               if (!object) {
+                       IF_VERBOSE_ASCODING_ERRORS(
+                       log_aserror(_("Can't get a property of a value that 
doesn't cast to an object (%s)."),
+                               object_val);
+                       )
+               }
+               else{
+                       object->get_member(name, &prop, ns);
+               }
+
+               push_stack(prop);
 
                break;
        }


reply via email to

[Prev in Thread] Current Thread [Next in Thread]