[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/parser/button_character_...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/parser/button_character_... |
Date: |
Sat, 04 Nov 2006 01:37:16 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 06/11/04 01:37:16
Modified files:
. : ChangeLog
server/parser : button_character_def.cpp button_character_def.h
Log message:
* server/parser/button_character_def.{cpp,h}: fixed last
fix attempting to still properly read the stream even
in case of an error.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1506&r2=1.1507
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/button_character_def.cpp?cvsroot=gnash&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/button_character_def.h?cvsroot=gnash&r1=1.6&r2=1.7
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1506
retrieving revision 1.1507
diff -u -b -r1.1506 -r1.1507
--- ChangeLog 4 Nov 2006 01:31:54 -0000 1.1506
+++ ChangeLog 4 Nov 2006 01:37:15 -0000 1.1507
@@ -1,5 +1,11 @@
2006-11-03 Sandro Santilli <address@hidden>
+ * server/parser/button_character_def.{cpp,h}: fixed last
+ fix attempting to still properly read the stream even
+ in case of an error.
+
+2006-11-03 Sandro Santilli <address@hidden>
+
* server/impl.cpp, server/swf.h: register "fixme" loaders
for known SWF8 opcodes; fix a typo in previous commit of swf.h.
* server/parser/movie_def_impl.cpp: be more quiet when not
Index: server/parser/button_character_def.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/button_character_def.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- server/parser/button_character_def.cpp 4 Nov 2006 00:56:13 -0000
1.5
+++ server/parser/button_character_def.cpp 4 Nov 2006 01:37:16 -0000
1.6
@@ -9,17 +9,11 @@
#include "button_character_def.h"
#include "button_character_instance.h" // for create_character_instance()
-//#include "action.h"
-//#include "render.h"
-//#include "sound.h"
#include "stream.h" // for read()
#include "movie_definition.h"
-//#include "sprite_instance.h"
-//#include "movie_root.h"
#include "action_buffer.h"
-
namespace gnash {
//
@@ -60,6 +54,12 @@
//
bool
+button_record::is_valid()
+{
+ return (m_character_def != NULL);
+}
+
+bool
button_record::read(stream* in, int tag_type,
movie_definition* m)
{
@@ -78,16 +78,13 @@
// Get character definition now (safer)
m_character_def = m->get_character_def(m_character_id);
// If no character with given ID is found in the movie
- // definition, we'll return false and hopefully caller
- // will use it ...
+ // definition, we print an error, but keep parsing.
if ( ! m_character_def )
{
log_error("button record refer to "
"character with id %d, which is not found "
"in the chars dictionary", m_character_id);
- return false;
}
- // TODO: check if we should call add_ref on the character_def
m_button_layer = in->read_u16();
m_button_matrix.read(in);
@@ -187,16 +184,21 @@
if (r.read(in, tag_type, m) == false)
{
// Null record; marks the end of button records.
- // (or an error, which we consider as an end
- // for safety)
break;
}
+
+ // SAFETY CHECK:
+ // if the button_record is corrupted, discard it
+ if ( r.is_valid() )
+ {
m_button_records.push_back(r);
}
+ }
// Read actions.
- m_button_actions.resize(m_button_actions.size() + 1);
- m_button_actions.back().read(in, tag_type);
+ button_action actions;
+ actions.read(in, tag_type);
+ m_button_actions.push_back(actions);
}
else if (tag_type == SWF::DEFINEBUTTONSOUND)
{
@@ -241,8 +243,14 @@
// Null record; marks the end of button records.
break;
}
+
+ // SAFETY CHECK:
+ // if the button_record is corrupted, discard it
+ if ( r.is_valid() )
+ {
m_button_records.push_back(r);
}
+ }
if (button_2_action_offset > 0)
{
Index: server/parser/button_character_def.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/button_character_def.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- server/parser/button_character_def.h 4 Nov 2006 00:56:13 -0000
1.6
+++ server/parser/button_character_def.h 4 Nov 2006 01:37:16 -0000
1.7
@@ -23,7 +23,10 @@
class button_record
{
+
+// TODO: make private, provide accessors
public:
+
bool m_hit_test;
bool m_down;
bool m_over;
@@ -34,14 +37,19 @@
matrix m_button_matrix;
cxform m_button_cxform;
+public:
+
/// Read a button record from the SWF stream.
//
/// Return true if we read a record; false if this is a null
- /// record or we encountered any other error (like references
- /// to unexistent characters)
- ///
- ///
bool read(stream* in, int tag_type, movie_definition* m);
+
+ /// Return true if the button_record is valid
+ //
+ /// A button record is invalid if it refers to a character
+ /// which has not been defined.
+ bool is_valid();
+
};
class button_action
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/parser/button_character_...,
Sandro Santilli <=