[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ./ChangeLog server/Object.cpp server/acti...
From: |
strk |
Subject: |
[Gnash-commit] gnash ./ChangeLog server/Object.cpp server/acti... |
Date: |
Sat, 11 Feb 2006 00:16:46 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Branch:
Changes by: strk <address@hidden> 06/02/11 00:16:46
Modified files:
. : ChangeLog
server : Object.cpp action.cpp action.h
Log message:
* server/Object.cpp: more debugging output
* server/action.{h,cpp}: added doActionGetMember,
changed object output from [object Object] to a more
interesting value, fixed <c_function 0x0x###>
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.119&tr2=1.120&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/Object.cpp.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/action.cpp.diff?tr1=1.40&tr2=1.41&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/action.h.diff?tr1=1.15&tr2=1.16&r1=text&r2=text
Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.119 gnash/ChangeLog:1.120
--- gnash/ChangeLog:1.119 Fri Feb 10 16:10:13 2006
+++ gnash/ChangeLog Sat Feb 11 00:16:46 2006
@@ -1,8 +1,11 @@
2006-02-10 Sandro Santilli <address@hidden>
* server/action.{cpp,h}: added doActionCallMethod,
- doActionCallFunction, doActionDefineFunction and
- doActionDefineFunction2 private methods to action_buffer.
+ doActionCallFunction, doActionDefineFunction,
+ doActionGetMember and doActionDefineFunction2 private
+ methods to action_buffer. Changed text representation
+ of generic objects from [object Object] to a more
+ interesing value, fixed <c_function 0x0x###>
* testsuite/actionscript.all/Function.as: more tests.
* server/Object.cpp: reworked get_member/set_member to map
"__proto__" to m_prototype.
Index: gnash/server/Object.cpp
diff -u gnash/server/Object.cpp:1.2 gnash/server/Object.cpp:1.3
--- gnash/server/Object.cpp:1.2 Fri Feb 10 16:10:13 2006
+++ gnash/server/Object.cpp Sat Feb 11 00:16:46 2006
@@ -30,7 +30,9 @@
bool
as_object::get_member(const tu_stringi& name, as_value* val)
{
- //log_msg("GET MEMBER: %s at %p for object %p\n", name.c_str(), val,
this);
+ IF_VERBOSE_DEBUG(
+ log_msg(" get member: %s (at %p) for object %p\n",
name.c_str(), val, this);
+ );
if (name == "__proto__")
{
val->set_as_object_interface(m_prototype);
@@ -41,19 +43,19 @@
if (m_members.get(name, &m) == false)
{
- //log_msg(" not found on first level\n");
+ IF_VERBOSE_DEBUG(log_msg(" not found on first
level\n"));
if (m_prototype == NULL)
{
- //log_msg(" no __proto__ (m_prototype)
defined\n");
+ IF_VERBOSE_DEBUG(log_msg(" no __proto__
(m_prototype) defined\n"));
return false;
}
else
{
- //log_msg(" checkin in __proto__ (m_prototype)
%p\n",m_prototype);
+ IF_VERBOSE_DEBUG(log_msg(" checkin in
__proto__ (m_prototype) %p\n",m_prototype));
return m_prototype->get_member(name, val);
}
} else {
- //log_msg(" found on first level");
+ IF_VERBOSE_DEBUG(log_msg(" found on first level"));
*val=m.get_member_value();
return true;
}
Index: gnash/server/action.cpp
diff -u gnash/server/action.cpp:1.40 gnash/server/action.cpp:1.41
--- gnash/server/action.cpp:1.40 Fri Feb 10 16:10:13 2006
+++ gnash/server/action.cpp Sat Feb 11 00:16:46 2006
@@ -1899,8 +1899,8 @@
else
{
log_error("error: call_method can't find method
%s "
- "for object %s\n", method_name.c_str(),
- typeid(*obj).name());
+ "for object %s (%p)\n",
method_name.c_str(),
+ typeid(*obj).name(), obj);
}
}
@@ -2054,6 +2054,49 @@
}
+ /*private*/
+ void
+ action_buffer::doActionGetMember(as_environment* env)
+ {
+ // Some corner case behaviors depend on the SWF file version.
+ int version =
env->get_target()->get_movie_definition()->get_version();
+
+ as_value& target = env->top(1);
+ as_object_interface* obj = target.to_object();
+
+ IF_VERBOSE_DEBUG(log_msg(" doActionGetMember: target: %p\n",
obj));
+
+ // Special case: String has a member "length"
+ // @@ FIXME: we shouldn't have all this "special" cases --strk;
+ if (obj == NULL && env->top(1).get_type() == as_value::STRING
&& env->top(0).to_tu_stringi() == "length")
+ {
+ int len =
env->top(1).to_tu_string_versioned(version).utf8_length();
+ env->top(1).set_int(len);
+ }
+ else
+ {
+ env->top(1).set_undefined();
+ // int nargs = (int) env->top(1).to_number();
+ if (obj) {
+ obj->get_member(env->top(0).to_tu_string(),
&(env->top(1)));
+ if (env->top(1).to_object() == NULL) {
+ IF_VERBOSE_ACTION(log_msg("--
get_member %s=%s\n",
+
env->top(0).to_tu_string().c_str(),
+
env->top(1).to_tu_string().c_str()));
+ } else {
+ IF_VERBOSE_ACTION(log_msg("--
get_member %s=%s at %p\n",
+
env->top(0).to_tu_string().c_str(),
+
env->top(1).to_tu_string().c_str(), env->top(1).to_object()));
+ }
+ }
+ else
+ {
+ // @@ log error?
+ }
+ }
+ env->drop(1);
+ }
+
void action_buffer::execute(
@@ -2755,41 +2798,8 @@
break;
}
case SWF::ACTION_GETMEMBER: // get member
- {
- as_value& target = env->top(1);
- as_object_interface* obj =
target.to_object();
-
- // Special case: String has a member
"length"
- if (obj == NULL &&
env->top(1).get_type() == as_value::STRING && env->top(0).to_tu_stringi() ==
"length")
- {
- int len =
env->top(1).to_tu_string_versioned(version).utf8_length();
- env->top(1).set_int(len);
- }
- else
- {
- env->top(1).set_undefined();
- // int nargs = (int)
env->top(1).to_number();
- if (obj) {
-
obj->get_member(env->top(0).to_tu_string(), &(env->top(1)));
- if
(env->top(1).to_object() == NULL) {
-
IF_VERBOSE_ACTION(log_msg("-- get_member %s=%s\n",
-
env->top(0).to_tu_string().c_str(),
-
env->top(1).to_tu_string().c_str()));
- } else {
-
IF_VERBOSE_ACTION(log_msg("-- get_member %s=%s at %p\n",
-
env->top(0).to_tu_string().c_str(),
-
env->top(1).to_tu_string().c_str(), env->top(1).to_object()));
- }
- }
- else
- {
- // @@ log error?
- }
- }
- env->drop(1);
- break;
-
- }
+ doActionGetMember(env);
+ break;
case SWF::ACTION_SETMEMBER: // set member
{
as_object_interface* obj =
env->top(2).to_object();
@@ -3503,13 +3513,16 @@
// TODO: we need an environment in order to
call toString()!
// This is the default.
- m_string_value = "[object Object]";
+ //m_string_value = "[object Object]";
+ char buffer[50];
+ snprintf(buffer, 50, "<as_object %p>", (void *)
m_object_value);
+ m_string_value = buffer;
}
}
else if (m_type == C_FUNCTION)
{
char buffer[50];
- snprintf(buffer, 50, "<c_function 0x%p>", (void *)
m_c_function_value);
+ snprintf(buffer, 50, "<c_function %p>", (void *)
m_c_function_value);
m_string_value = buffer;
}
else if (m_type == AS_FUNCTION)
Index: gnash/server/action.h
diff -u gnash/server/action.h:1.15 gnash/server/action.h:1.16
--- gnash/server/action.h:1.15 Fri Feb 10 16:10:13 2006
+++ gnash/server/action.h Sat Feb 11 00:16:46 2006
@@ -220,6 +220,8 @@
void doActionDefineFunction2(as_environment* env,
array<with_stack_entry>& with_stack, int pc, int*
next_pc);
+
+ void doActionGetMember(as_environment* env);
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ./ChangeLog server/Object.cpp server/acti...,
strk <=