[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/as_environment.cpp
From: |
Zou Lunkai |
Subject: |
[Gnash-commit] gnash ChangeLog server/as_environment.cpp |
Date: |
Wed, 12 Sep 2007 09:03:30 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Zou Lunkai <zoulunkai> 07/09/12 09:03:30
Modified files:
. : ChangeLog
server : as_environment.cpp
Log message:
* server/as_environment.cpp: parse_path() cleanups.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4283&r2=1.4284
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_environment.cpp?cvsroot=gnash&r1=1.85&r2=1.86
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4283
retrieving revision 1.4284
diff -u -b -r1.4283 -r1.4284
--- ChangeLog 12 Sep 2007 08:25:37 -0000 1.4283
+++ ChangeLog 12 Sep 2007 09:03:29 -0000 1.4284
@@ -1,3 +1,7 @@
+2007-09-12 Zou Lunkai <address@hidden>
+
+ * server/as_environment.cpp: parse_path() cleanups.
+
2007-09-12 Benjamin Wolsey <address@hidden>
* gui/gtk.cpp: pass unicode of key event when notifying gui.
Index: server/as_environment.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_environment.cpp,v
retrieving revision 1.85
retrieving revision 1.86
diff -u -b -r1.85 -r1.86
--- server/as_environment.cpp 29 Aug 2007 13:50:09 -0000 1.85
+++ server/as_environment.cpp 12 Sep 2007 09:03:30 -0000 1.86
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: as_environment.cpp,v 1.85 2007/08/29 13:50:09 strk Exp $ */
+/* $Id: as_environment.cpp,v 1.86 2007/09/12 09:03:30 zoulunkai Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -383,45 +383,66 @@
as_environment::parse_path(const std::string& var_path,
std::string& path, std::string& var, bool* is_slash_based)
{
-//log_msg(_("parse_path(%s)"), var_path.c_str());
- // Search for colon.
- int colon_index = 0;
- int var_path_length = var_path.length();
- for ( ; colon_index < var_path_length; colon_index++) {
- if (var_path[colon_index] == ':') {
- if ( is_slash_based ) *is_slash_based = true;
- // Found it.
+ //log_msg(_("parse_path(%s)"), var_path.c_str());
+
+ bool slash_based = false;
+ std::string::size_type var_path_length = var_path.length();
+ std::string::size_type separator_index = var_path_length - 1;
+ for( ; separator_index > 0; separator_index--)
+ {
+ if(var_path[separator_index] == ':')
+ {
+ slash_based = true;
break;
}
- }
-
- if (colon_index >= var_path_length) {
- // No colon. Is there a '.'? Find the last
- // one, if any.
- for (colon_index = var_path_length - 1; colon_index >= 0;
colon_index--) {
- if (var_path[colon_index] == '.') {
- // Found it.
- if ( is_slash_based ) *is_slash_based = false;
+ else if(var_path[separator_index] == '.')
+ {
+ slash_based = false;
break;
}
}
- if (colon_index < 0) {
-//log_msg(_(" no colon index"));
+
+ if(separator_index == 0)
+ // if no path, only raw variable.
+ {
return false;
}
- }
// Make the subparts.
// Var.
- var = &var_path[colon_index + 1];
+ var = &var_path[separator_index + 1];
// @@ could be better.
path = var_path;
- path.resize(colon_index);
+ path.resize(separator_index);
-//log_msg(_(" path=%s var=%s"), path.c_str(), var.c_str());
+ if(is_slash_based)
+ {
+ *is_slash_based = slash_based;
+ }
+
+//#define SUPPORT_IRREGULAR_PATH
+// enable this would give 3 more xpasses for callFunction_test.c,
+// but also slow down lots of things.
+// TODO: optimize all parse_path() related functions
+#ifdef SUPPORT_IRREGULAR_PATH
+ if(slash_based)
+ {
+ // make sure the path is slash_based, see testcase
callFunction_test.swf
+ for(std::string::size_type index=0; index < separator_index; index++)
+ {
+ // Replace dot and colon with slash in a "slash based" path
+ // But don't replace ".."
+ if((path[index] == ':') || (path[index] == '.' && path[index+1] !=
'.'))
+ {
+ path[index] = '/';
+ }
+ }
+ }
+#endif
+ //log_msg(_(" path=%s var=%s"), path.c_str(), var.c_str());
return true;
}
- [Gnash-commit] gnash ChangeLog server/as_environment.cpp,
Zou Lunkai <=