[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/as_environment.h server/...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/as_environment.h server/... |
Date: |
Fri, 16 Jun 2006 00:32:26 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 06/06/16 00:32:26
Modified files:
. : ChangeLog
server : as_environment.h
server/swf : ASHandlers.cpp
Log message:
* server/as_environment.h: changed drop(), top() and bottom()
methods to take size_t rather then int and to check stack
size; added (public) stack_size() method.
* server/swf/ASHandlers.cpp (SWFHandlers::ActionPop):
handle empty stack condition.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.408&r2=1.409
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_environment.h?cvsroot=gnash&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/ASHandlers.cpp?cvsroot=gnash&r1=1.8&r2=1.9
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.408
retrieving revision 1.409
diff -u -b -r1.408 -r1.409
--- ChangeLog 15 Jun 2006 21:38:51 -0000 1.408
+++ ChangeLog 16 Jun 2006 00:32:25 -0000 1.409
@@ -1,8 +1,14 @@
2006-06-15 Sandro Santilli <address@hidden>
+ * server/as_environment.h: changed drop(), top() and bottom()
+ methods to take size_t rather then int and to check stack
+ size; added (public) stack_size() method.
+ * server/swf/ASHandlers.cpp (SWFHandlers::ActionPop):
+ handle empty stack condition.
* server/edit_text_character.cpp: don't abort when text doesn't
fit into the defined boundaries (fixes bug #16637).
* server/edit_text_character.h: more stuff made private.
+ * server/edit_text_character_def.h: added do_word_wrap() method.
2006-06-15 Vitaly Alexeev <address@hidden>
Index: server/as_environment.h
===================================================================
RCS file: /sources/gnash/gnash/server/as_environment.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- server/as_environment.h 25 May 2006 11:33:28 -0000 1.2
+++ server/as_environment.h 16 Jun 2006 00:32:25 -0000 1.3
@@ -87,6 +87,7 @@
frame_slot() {}
frame_slot(const tu_string& name, const as_value& val) :
m_name(name), m_value(val) {}
};
+
std::vector<frame_slot> m_local_frames;
@@ -108,26 +109,49 @@
/// Pops an as_value off the stack top and return it.
- as_value pop() { as_value result = m_stack.back();
m_stack.pop_back(); return result; }
+ as_value pop()
+ {
+ assert( m_stack.size() > 0 );
+ as_value result = m_stack.back();
+ m_stack.pop_back();
+ return result;
+ }
/// Get stack value at the given distance from top.
//
/// top(0) is actual stack top
///
- as_value& top(int dist) { return m_stack[m_stack.size() - 1 -
dist]; }
+ as_value& top(size_t dist)
+ {
+ assert ( m_stack.size() > dist );
+ return m_stack[m_stack.size() - 1 - dist];
+ }
/// Get stack value at the given distance from bottom.
//
/// bottom(0) is actual stack top
///
- as_value& bottom(int index) { return m_stack[index]; }
+ as_value& bottom(size_t index)
+ {
+ assert ( m_stack.size() > index );
+ return m_stack[index];
+ }
/// Drop 'count' values off the top of the stack.
- void drop(int count) { m_stack.resize(m_stack.size() - count); }
+ void drop(size_t count)
+ {
+ assert ( m_stack.size() >= count );
+ m_stack.resize(m_stack.size() - count);
+ }
/// Returns index of top stack element
+ // FIXME: what if stack is empty ??
+ // I'd obsolete this and convert calling code to use
+ // stack_size() instead.
int get_top_index() const { return m_stack.size() - 1; }
+ size_t stack_size() const { return m_stack.size(); }
+
/// \brief
/// Return the (possibly UNDEFINED) value of the named var.
/// Variable name can contain path elements.
@@ -193,12 +217,12 @@
movie* find_target(const as_value& val) const;
/// Dump content of the stack using the log_msg function
- void dump_stack()
+ void dump_stack(std::ostream& out=std::cerr)
{
for (int i=0, n=m_stack.size(); i<n; i++)
{
- log_msg("Stack[%d]: %s\n",
- i, m_stack[i].to_string());
+ out << "Stack[" << i << "]: "
+ << m_stack[i].to_string() << std::endl;
}
}
};
Index: server/swf/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/swf/ASHandlers.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- server/swf/ASHandlers.cpp 12 Jun 2006 21:56:37 -0000 1.8
+++ server/swf/ASHandlers.cpp 16 Jun 2006 00:32:26 -0000 1.9
@@ -591,7 +591,15 @@
SWFHandlers::ActionPop(as_environment &env)
{
// GNASH_REPORT_FUNCTION;
+ if ( ! env.stack_size() )
+ {
+ // Malformed SWF
+ log_warning("Empty stack on ActionPop, bogus SWF ?");
+ }
+ else
+ {
env.drop(1);
+ }
return true;
}
- [Gnash-commit] gnash ChangeLog server/as_environment.h server/...,
Sandro Santilli <=