diff --git a/sp/src/game/shared/mapbase/vscript_funcs_shared.cpp b/sp/src/game/shared/mapbase/vscript_funcs_shared.cpp index 4c6d4817..8a36c7a0 100644 --- a/sp/src/game/shared/mapbase/vscript_funcs_shared.cpp +++ b/sp/src/game/shared/mapbase/vscript_funcs_shared.cpp @@ -560,16 +560,18 @@ bool CAnimEventTInstanceHelper::Set( void *p, const char *pszKey, ScriptVariant_ animevent_t *ani = ((animevent_t *)p); if (FStrEq( pszKey, "event" )) - ani->event = variant; + return variant.AssignTo( &ani->event ); else if (FStrEq( pszKey, "options" )) - ani->options = variant; + // broken: return variant.AssignTo( &ani->options ); + // variant memory is freed afterwards + return false; else if (FStrEq( pszKey, "cycle" )) - ani->cycle = variant; + return variant.AssignTo( &ani->cycle ); else if (FStrEq( pszKey, "eventtime" )) - ani->eventtime = variant; + return variant.AssignTo( &ani->eventtime ); else if (FStrEq( pszKey, "type" )) - ani->type = variant; - else if (FStrEq( pszKey, "source" )) + return variant.AssignTo( &ani->type ); + else if (FStrEq( pszKey, "source" ) && variant.m_type == FIELD_HSCRIPT) { CBaseEntity *pEnt = ToEnt( variant.m_hScript ); if (pEnt) diff --git a/sp/src/vscript/vscript_bindings_base.cpp b/sp/src/vscript/vscript_bindings_base.cpp index 99b6194a..e6ea396b 100644 --- a/sp/src/vscript/vscript_bindings_base.cpp +++ b/sp/src/vscript/vscript_bindings_base.cpp @@ -440,13 +440,11 @@ bool CScriptColorInstanceHelper::Get( void *p, const char *pszKey, ScriptVariant bool CScriptColorInstanceHelper::Set( void *p, const char *pszKey, ScriptVariant_t &variant ) { Color *pClr = ((Color *)p); - if ( strlen(pszKey) == 1 ) + int iVal; + if ( strlen(pszKey) == 1 && variant.AssignTo( &iVal ) ) { - int iVal; - variant.AssignTo( &iVal ); switch (pszKey[0]) { - // variant.AssignTo( &(*pClr)[0] ); case 'r': (*pClr)[0] = iVal; return true; diff --git a/sp/src/vscript/vscript_bindings_math.cpp b/sp/src/vscript/vscript_bindings_math.cpp index fb9c8334..3c83aeec 100644 --- a/sp/src/vscript/vscript_bindings_math.cpp +++ b/sp/src/vscript/vscript_bindings_math.cpp @@ -259,17 +259,13 @@ bool CScriptQuaternionInstanceHelper::Set( void *p, const char *pszKey, ScriptVa switch (pszKey[0]) { case 'x': - variant.AssignTo( &pQuat->x ); - return true; + return variant.AssignTo( &pQuat->x ); case 'y': - variant.AssignTo( &pQuat->y ); - return true; + return variant.AssignTo( &pQuat->y ); case 'z': - variant.AssignTo( &pQuat->z ); - return true; + return variant.AssignTo( &pQuat->z ); case 'w': - variant.AssignTo( &pQuat->w ); - return true; + return variant.AssignTo( &pQuat->w ); } } return false;