[vlc-commits] utils: Fix string copying

Hugo Beauzée-Luyssen git at videolan.org
Tue Apr 21 10:16:07 CEST 2015


npapi-vlc | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Fri Apr  3 12:10:23 2015 +0200| [63dc59ccef2fe1ab71febbc3a927a0fe9686630c] | committer: Hugo Beauzée-Luyssen

utils: Fix string copying

> http://git.videolan.org/gitweb.cgi/npapi-vlc.git/?a=commit;h=63dc59ccef2fe1ab71febbc3a927a0fe9686630c
---

 npapi/utils.hpp |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/npapi/utils.hpp b/npapi/utils.hpp
index f834a50..63cb3a9 100644
--- a/npapi/utils.hpp
+++ b/npapi/utils.hpp
@@ -280,7 +280,9 @@ struct traits<NPString>
             NULL_TO_NPVARIANT( v );
             return;
         }
-        auto raw = strdup( s.UTF8Characters );
+        auto raw = static_cast<NPUTF8*>( NPN_MemAlloc( s.UTF8Length + 1 ) );
+        memcpy( raw, s.UTF8Characters, s.UTF8Length );
+        raw[s.UTF8Length] = 0;
         STRINGZ_TO_NPVARIANT( raw, v );
     }
 };
@@ -305,7 +307,9 @@ struct traits<NPUTF8*>
             NULL_TO_NPVARIANT( v );
             return;
         }
-        auto copy = strdup( str );
+        auto len = strlen(str);
+        auto copy = static_cast<NPUTF8*>( NPN_MemAlloc( len + 1 ) );
+        strcpy(copy, str);
         STRINGZ_TO_NPVARIANT( copy, v );
     }
 };
@@ -325,8 +329,7 @@ struct traits<std::string>
 
     static void from( const std::string& str, NPVariant& v )
     {
-        auto copy = strdup( str.c_str() );
-        STRINGZ_TO_NPVARIANT( copy, v );
+        traits<char*>::from( str.c_str(), v );
     }
 };
 



More information about the vlc-commits mailing list