[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] /srv/bzr/gnash/avm2 r9518: INITPROPERTY opcode: Make sure
From: |
Tom Stellard |
Subject: |
[Gnash-commit] /srv/bzr/gnash/avm2 r9518: INITPROPERTY opcode: Make sure not initialize a property on an undefined object. |
Date: |
Fri, 22 Aug 2008 19:29:02 +0800 |
User-agent: |
Bazaar (1.5) |
------------------------------------------------------------
revno: 9518
committer: Tom Stellard <address@hidden>
branch nick: gnash_traits
timestamp: Fri 2008-08-22 19:29:02 +0800
message:
INITPROPERTY opcode: Make sure not initialize a property on an undefined
object.
modified:
libcore/vm/Machine.cpp
=== modified file 'libcore/vm/Machine.cpp'
--- a/libcore/vm/Machine.cpp 2008-08-22 11:16:15 +0000
+++ b/libcore/vm/Machine.cpp 2008-08-22 11:29:02 +0000
@@ -1588,12 +1588,14 @@
as_value v = pop_stack();
//TODO: If multiname is a runtime mutiname we need to also pop
name and namespace values.
as_value object = pop_stack();
- LOG_DEBUG_AVM("Initializing property ABC_id=%u name=%s on
object
%s",a.getABCName(),mPoolObject->mStringPool[a.getABCName()],object.toDebugString());
-
-
object.to_object()->init_member(mPoolObject->mStringPool[a.getABCName()],v,0,0);
-
-// mStack.drop(completeName(a));
- //TODO: mStack.pop().to_object().setProperty(a, v, true); //
true for init
+ if(object.is_undefined()){
+ LOG_DEBUG_AVM("Object is undefined will skip trying to
initialize property.");
+ }
+ else{
+ LOG_DEBUG_AVM("Initializing property ABC_id=%u name=%s
on object
%s",a.getABCName(),mPoolObject->mStringPool[a.getABCName()],object.toDebugString());
+
+
object.to_object().get()->init_member(mPoolObject->mStringPool[a.getABCName()],v,0,0);
+ }
break;
}
/// 0x6A ABC_ACTION_DELETEPROPERTY
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/avm2 r9518: INITPROPERTY opcode: Make sure not initialize a property on an undefined object.,
Tom Stellard <=