]> git.sesse.net Git - vlc/blobdiff - mozilla/vlcplugin.cpp
Be on the safe side of memory protection for now: use PROT_WRITE.
[vlc] / mozilla / vlcplugin.cpp
index a9e1781d2ddb928c12036ed85605133ca4559058..afa1399b0022740f9afb6a69ac58fabed56a60bc 100644 (file)
@@ -62,7 +62,7 @@ VlcPlugin::VlcPlugin( NPP instance, uint16 mode ) :
 }
 
 static bool boolValue(const char *value) {
-    return ( !strcmp(value, "1") || 
+    return ( !strcmp(value, "1") ||
              !strcasecmp(value, "true") ||
              !strcasecmp(value, "yes") );
 }
@@ -70,8 +70,8 @@ static bool boolValue(const char *value) {
 NPError VlcPlugin::init(int argc, char* const argn[], char* const argv[])
 {
     /* prepare VLC command line */
-    char *ppsz_argv[32] = { "vlc" };
-    int ppsz_argc = 1;
+    char *ppsz_argv[32];
+    int ppsz_argc = 0;
 
     /* locate VLC module path */
 #ifdef XP_MACOSX
@@ -98,24 +98,6 @@ NPError VlcPlugin::init(int argc, char* const argn[], char* const argv[])
          RegCloseKey( h_key );
     }
     ppsz_argv[ppsz_argc++] = "--no-one-instance";
-    if( IsDebuggerPresent() )
-    {
-        /*
-        ** VLC default threading mechanism is designed to be as compatible
-        ** with POSIX as possible. However when debugged on win32, threads
-        ** lose signals and eventually VLC get stuck during initialization.
-        ** threading support can be configured to be more debugging friendly
-        ** but it will be less compatible with POSIX.
-        ** This is done by initializing with the following options:
-        */
-        ppsz_argv[ppsz_argc++] = "--fast-mutex";
-        ppsz_argv[ppsz_argc++] = "--win9x-cv-method=1";
-    }
-
-
-#if 0
-    ppsz_argv[0] = "C:\\Cygwin\\home\\damienf\\vlc-trunk\\vlc";
-#endif
 
 #endif /* XP_MACOSX */
 
@@ -287,7 +269,7 @@ VlcPlugin::~VlcPlugin()
     if( libvlc_log )
         libvlc_log_close(libvlc_log, NULL);
     if( libvlc_instance )
-        libvlc_destroy(libvlc_instance, NULL );
+        libvlc_release(libvlc_instance, NULL );
 }
 
 /*****************************************************************************
@@ -304,15 +286,26 @@ char *VlcPlugin::getAbsoluteURL(const char *url)
         {
             // validate protocol header
             const char *start = url;
-            while( start != end ) {
-                char c = tolower(*start);
-                if( (c < 'a') || (c > 'z') )
-                    // not valid protocol header, assume relative URL
-                    goto relativeurl;
+            char c = *start;
+            if( isalpha(c) )
+            {
                 ++start;
+                while( start != end )
+                {
+                    c  = *start;
+                    if( ! (isalnum(c)
+                       || ('-' == c)
+                       || ('+' == c)
+                       || ('.' == c)
+                       || ('/' == c)) ) /* VLC uses / to allow user to specify a demuxer */
+                        // not valid protocol header, assume relative URL
+                        goto relativeurl;
+                    ++start;
+                }
+                /* we have a protocol header, therefore URL is absolute */
+                return strdup(url);
             }
-            /* we have a protocol header, therefore URL is absolute */
-            return strdup(url);
+            // not a valid protocol header, assume relative URL
         }
 
 relativeurl:
@@ -379,7 +372,7 @@ relativeurl:
                     return href;
                 }
 
-                /* find last path component and replace it */ 
+                /* find last path component and replace it */
                 while( '/' != *pathend)
                     --pathend;
 
@@ -406,7 +399,7 @@ relativeurl:
                         url = ++p;
                         continue;
                     }
-                    if( '.' != *p ) 
+                    if( '.' != *p )
                         break;
                     ++p;
                     if( '\0' == *p )
@@ -415,7 +408,7 @@ relativeurl:
                     }
                     else
                     {
-                        if( '/' != *p ) 
+                        if( '/' != *p )
                             break;
                         /* relative url starts with '../' */
                         ++p;