vlc | branch: master | Jean-Baptiste Kempf <[email protected]> | Tue Feb 10 14:51:51 2015 +0100| [e105c631feec9c7a359002d1c44c8b919d55eb23] | committer: Jean-Baptiste Kempf
lua: fix opening of scripts on Windows on non-ASCII path Close #13752 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e105c631feec9c7a359002d1c44c8b919d55eb23 --- modules/lua/vlc.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/modules/lua/vlc.c b/modules/lua/vlc.c index 091e493..f8ab309 100644 --- a/modules/lua/vlc.c +++ b/modules/lua/vlc.c @@ -834,15 +834,23 @@ int vlclua_add_modules_path( lua_State *L, const char *psz_filename ) } /** Replacement for luaL_dofile, using VLC's input capabilities */ -int vlclua_dofile( vlc_object_t *p_this, lua_State *L, const char *uri ) +int vlclua_dofile( vlc_object_t *p_this, lua_State *L, const char *curi ) { - if( !strstr( uri, "://" ) ) - return luaL_dofile( L, uri ); - if( !strncasecmp( uri, "file://", 7 ) ) - return luaL_dofile( L, uri + 7 ); + char *uri = ToLocaleDup( curi ); + if( !strstr( uri, "://" ) ) { + int ret = luaL_dofile( L, uri ); + free( uri ); + return ret; + } + if( !strncasecmp( uri, "file://", 7 ) ) { + int ret = luaL_dofile( L, uri + 7 ); + free( uri ); + return ret; + } stream_t *s = stream_UrlNew( p_this, uri ); if( !s ) { + free( uri ); return 1; } int64_t i_size = stream_Size( s ); @@ -851,6 +859,7 @@ int vlclua_dofile( vlc_object_t *p_this, lua_State *L, const char *uri ) { // FIXME: read the whole stream until we reach the end (if no size) stream_Delete( s ); + free( uri ); return 1; } int64_t i_read = stream_Read( s, p_buffer, (int) i_size ); @@ -861,5 +870,6 @@ int vlclua_dofile( vlc_object_t *p_this, lua_State *L, const char *uri ) i_ret = lua_pcall( L, 0, LUA_MULTRET, 0 ); stream_Delete( s ); free( p_buffer ); + free( uri ); return i_ret; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
