gnash-commit
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]