+vstr has a check on the case of release(of the key) to avoid firing the release when bringing down the console; but that check causes the feature to malfunction if you press another +vstr bind at the duration of the first.
original source part:
case '+':
v = Cvar_VariableString( Cmd_Argv( 1 ) );
pushed = qtrue;
break;
case '-':
// we check this because otherwise key release would fire even in the console...
if(pushed) {
v = Cvar_VariableString( Cmd_Argv( 2 ) );
pushed = qfalse;
}
break;
Example of malfunction: [Below in a reply by Nexu]
A potential solution is to remove the 'pushed' check altogether or i suppose if one wants to keep the feature, a more dynamic approach may be required to save several such binds' "pushes".
EDIT: The workaround of removing the 'if pushed' check altogether appears to be working fine.
This post has been edited by mitsubishi: 26 February 2010 - 07:44 AM