[Top][All Lists]
[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;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/avm2 r9676: Fix segfault in GETPROPERTY opcode.,
Tom Stellard <=