[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server...
From: |
Benjamin Wolsey |
Subject: |
[Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server... |
Date: |
Mon, 16 Jun 2008 08:50:22 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Benjamin Wolsey <bwy> 08/06/16 08:50:22
Modified files:
. : ChangeLog
server/vm : ASHandlers.cpp ASHandlers.h
Log message:
* server/vm/ASHandlers.{cpp,h}: use std::string instead of C
strings
for CommonGetUrl (saves converting back and forth several
times).
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6936&r2=1.6937
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.249&r2=1.250
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.h?cvsroot=gnash&r1=1.16&r2=1.17
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6936
retrieving revision 1.6937
diff -u -b -r1.6936 -r1.6937
--- ChangeLog 16 Jun 2008 07:22:19 -0000 1.6936
+++ ChangeLog 16 Jun 2008 08:50:21 -0000 1.6937
@@ -1,11 +1,18 @@
+2008-06-15 Benjamin Wolsey <address@hidden>
+
+ * server/vm/ASHandlers.{cpp,h}: use std::string instead of C strings
+ for CommonGetUrl (saves converting back and forth several times).
+
2008-06-16 Zou Lunkai <address@hidden>
* libbase/utility.h: implement a safer but slower PIXEL_TO_TWIPS().
* server/types.h: move PIXEL_TO_TWIPS to utility.h
- * server/matrix.h: safe but slower version of FloatToFixed16() and
DoubleToFixed16().
- * server/parser/movie_def_impl.h, character.cpp: head file and data
types cleanups.
- * testsuite/server/MatrixTest.cpp: more telerrant about matrix test,
from 10e-6 to 10-3,
- enable the test file.
+ * server/matrix.h: safe but slower version of FloatToFixed16() and
+ DoubleToFixed16().
+ * server/parser/movie_def_impl.h, character.cpp: head file and data
+ types cleanups.
+ * testsuite/server/MatrixTest.cpp: more telerrant about matrix test,
+ from 10e-6 to 10-3, enable the test file.
2008-06-15 Benjamin Wolsey <address@hidden>
Index: server/vm/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v
retrieving revision 1.249
retrieving revision 1.250
diff -u -b -r1.249 -r1.250
--- server/vm/ASHandlers.cpp 15 Jun 2008 15:00:17 -0000 1.249
+++ server/vm/ASHandlers.cpp 16 Jun 2008 08:50:21 -0000 1.250
@@ -50,6 +50,7 @@
#include "sound_handler.h"
#include "namedStrings.h"
#include "utf8.h"
+#include "StringPredicates.h" // StringNoCaseEqual
#include <unistd.h> // For write() on BSD
#include <string>
@@ -591,8 +592,12 @@
// and use tag length as maxlen
//size_t tag_length = code.read_int16(pc+1);
const char* url = code.read_string(pc+3);
- size_t url_len = strlen(url)+1;
- const char* target = code.read_string(pc+3+url_len);
+ size_t urlLength = strlen(url)+1;
+
+ // Will abort if code.read_string returns 0, but action
+ // buffer should always have a null terminator at the
+ // end.
+ const std::string target(code.read_string(pc + 3 + urlLength));
IF_VERBOSE_ACTION (
log_action(_("GetUrl: target=%s url=%s"), target, url);
@@ -2155,24 +2160,18 @@
// - http://www.uptoten.com
// Should load in _level0, with loadTargetFlag set.
//
+// Method isbBit-packed as follows:
+// SendVarsMethod:2 (0:NONE 1:GET 2:POST)
+// Reserved:4
+// LoadTargetFlag:1
+// LoadVariableFlag:1
void
SWFHandlers::CommonGetUrl(as_environment& env,
as_value target, // the target window, or _level1..10
- const char* url_c,
- boost::uint8_t method /*
- * Bit-packed as follow
- *
- * SendVarsMethod:2 (0:NONE 1:GET 2:POST)
- * Reserved:4
- * LoadTargetFlag:1
- * LoadVariableFlag:1
- */
- )
+ const std::string& urlTarget, boost::uint8_t method)
{
- assert(url_c);
-
- if ( *url_c == '\0' )
+ if (urlTarget.empty())
{
log_error(_("Bogus empty GetUrl url in SWF file, skipping"));
return;
@@ -2191,7 +2190,7 @@
{
log_error(_("Bogus GetUrl2 send vars method "
" in SWF file (both GET and POST requested), use GET"));
- sendVarsMethod=1;
+ sendVarsMethod = 1;
}
std::string target_string;
@@ -2202,14 +2201,16 @@
movie_root& m = VM::get().getRoot();
+
// If the url starts with "FSCommand:", then this is
// a message for the host app.
- if (strncasecmp(url_c, "FSCommand:", 10) == 0)
+ StringNoCaseEqual noCaseCompare;
+ if (noCaseCompare(urlTarget.substr(0, 10), "FSCommand:"))
{
if (m.fsCommandHandle)
{
// Call into the app.
- (*m.fsCommandHandle)(env.get_target()->get_root(), url_c + 10,
target_string.c_str());
+ (*m.fsCommandHandle)(env.get_target()->get_root(),
urlTarget.substr(10), target_string.c_str());
}
return;
@@ -2217,7 +2218,7 @@
// If the url starts with "print:", then this is
// a print request.
- if (strncmp(url_c, "print:", 6) == 0)
+ if (noCaseCompare(urlTarget.substr(0, 6), "print:"))
{
log_unimpl("print: URL");
return;
@@ -2239,13 +2240,11 @@
// The base url must be set with the set_base_url() command.
//
- std::string url_s(url_c);
-
const URL& baseurl = get_base_url();
- URL url(url_s, baseurl);
+ URL url(urlTarget, baseurl);
log_debug(_("get url: target=%s, url=%s (%s), method=%x (sendVars:%X,
loadTarget:%d, loadVariable:%d)"), target_string,
- url.str(), url_c, static_cast<int>(method), sendVarsMethod,
loadTargetFlag, loadVariableFlag);
+ url.str(), urlTarget, static_cast<int>(method), sendVarsMethod,
loadTargetFlag, loadVariableFlag);
if ( ! URLAccessManager::allow(url) )
{
@@ -2447,7 +2446,7 @@
// use the original url, non parsed (the browser will know better how
to resolve
// relative urls and handle hactionscript)
- request << "GET " << target_string << ":" << url_c << std::endl;
+ request << "GET " << target_string << ":" << urlTarget << std::endl;
std::string requestString = request.str();
const char* cmd = requestString.c_str();
@@ -2527,7 +2526,7 @@
else
{
const std::string& url = url_val.to_string();
- CommonGetUrl(env, env.top(0), url.c_str(), method);
+ CommonGetUrl(env, env.top(0), url, method);
}
env.drop(2);
@@ -2927,7 +2926,7 @@
// will be left with a deleted object !!
// Rob: we don't want to use void pointers here..
newobj->add_ref(); // this will leak, but at least debugger won't end up
- // with a dandling reference...
+ // with a dangling reference...
#endif //ndef GNASH_USE_GC
debugger.addSymbol(newobj.get(), classname);
#endif
@@ -3134,8 +3133,7 @@
#if GNASH_DEBUG
log_debug(_("ActionNewAdd(%s, %s) [primitive conversion done]"),
- v1,
- v2);
+ v1, v2);
#endif
if (v1.is_string() || v2.is_string() )
Index: server/vm/ASHandlers.h
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ASHandlers.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- server/vm/ASHandlers.h 25 Apr 2008 09:56:07 -0000 1.16
+++ server/vm/ASHandlers.h 16 Jun 2008 08:50:22 -0000 1.17
@@ -14,8 +14,8 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#ifndef __ASHANDLERS_H__
-#define __ASHANDLERS_H__
+#ifndef GNASH_ASHANDLERS_H
+#define GNASH_ASHANDLERS_H
#include <string>
#include <map>
@@ -55,7 +55,7 @@
// @@strk@@ should we move this to .cpp file ? it's only
// use is within SWFHandlers, anyway...
typedef void (*action_callback_t)(ActionExec& thread);
-//as_environment &env, action_buffer& code, size_t& PC);
+
class ActionHandler
{
public:
@@ -111,12 +111,10 @@
action_type lastType() const
{
return ACTION_GOTOEXPRESSION;
- //return _handlers[ACTION_GOTOEXPRESSION].getType();
}
const ActionHandler &operator[] (action_type x) const
{
- //return const_cast<ActionHandler>(_handlers[x]);
return get_handlers()[x];
}
@@ -139,7 +137,7 @@
/// 0:NONE, 1:GET, 2:POST
///
static void CommonGetUrl(as_environment& env,
- as_value target, const char* url,
+ as_value target, const std::string& url,
boost::uint8_t method);
/// Common code for SetTarget and SetTargetExpression
- [Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server..., Benjamin Wolsey, 2008/06/12
- [Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server..., Benjamin Wolsey, 2008/06/12
- [Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server..., Benjamin Wolsey, 2008/06/13
- [Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server..., Benjamin Wolsey, 2008/06/13
- [Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server...,
Benjamin Wolsey <=
- [Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server..., Benjamin Wolsey, 2008/06/16
- [Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server..., Benjamin Wolsey, 2008/06/17