[vlc-commits] fix vlclua_var_toggle_or_set
Rafaël Carré
git at videolan.org
Sat Jul 16 03:42:37 CEST 2011
vlc | branch: master | Rafaël Carré <rafael.carre at gmail.com> | Fri Jul 15 21:41:49 2011 -0400| [e292947855ae11068c34a1e27dbf919e3abc85c6] | committer: Rafaël Carré
fix vlclua_var_toggle_or_set
argument is a string ("on" or "off") not a bool
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e292947855ae11068c34a1e27dbf919e3abc85c6
---
modules/lua/libs/variables.c | 24 +++++++++++++++++++-----
1 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/modules/lua/libs/variables.c b/modules/lua/libs/variables.c
index cb866b3..1e6e409 100644
--- a/modules/lua/libs/variables.c
+++ b/modules/lua/libs/variables.c
@@ -271,15 +271,29 @@ int vlclua_var_toggle_or_set( lua_State *L, vlc_object_t *p_obj,
if( lua_gettop( L ) > 1 ) return vlclua_error( L );
if( lua_gettop( L ) == 0 )
+ {
b_bool = var_ToggleBool( p_obj, psz_name );
- else /* lua_gettop( L ) == 1 */
+ goto end;
+ }
+
+ /* lua_gettop( L ) == 1 */
+ const char *s = luaL_checkstring( L, -1 );
+ lua_pop( L, 1 );
+
+ if( s && !strcmp(s, "on") )
+ b_bool = true;
+ else if( s && !strcmp(s, "off") )
+ b_bool = false;
+ else
{
- b_bool = luaL_checkboolean( L, -1 );
- lua_pop( L, 1 );
- if( b_bool != var_GetBool( p_obj, psz_name ) )
- var_SetBool( p_obj, psz_name, b_bool );
+ b_bool = var_GetBool( p_obj, psz_name );
+ goto end;
}
+ if( b_bool != var_GetBool( p_obj, psz_name ) )
+ var_SetBool( p_obj, psz_name, b_bool );
+
+end:
lua_pushboolean( L, b_bool );
return 1;
}
More information about the vlc-commits
mailing list