mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-14 12:04:29 +00:00
lottie/expressions: Improve safety
- Prevent expression processing if a property fails to parse. - Fixed an incorrect usage of JerryScript. This is a hotfix to address expression-related crashes.
This commit is contained in:
parent
df8c79fbc1
commit
4fda695c3c
2 changed files with 5 additions and 1 deletions
|
@ -1080,7 +1080,7 @@ static void _buildProperty(float frameNo, jerry_value_t context, LottieExpressio
|
||||||
|
|
||||||
static jerry_value_t _comp(const jerry_call_info_t* info, const jerry_value_t args[], const jerry_length_t argsCnt)
|
static jerry_value_t _comp(const jerry_call_info_t* info, const jerry_value_t args[], const jerry_length_t argsCnt)
|
||||||
{
|
{
|
||||||
auto data = static_cast<ExpContent*>(jerry_object_get_native_ptr(info->function, nullptr));
|
auto data = static_cast<ExpContent*>(jerry_object_get_native_ptr(info->function, &freeCb));
|
||||||
auto comp = static_cast<LottieLayer*>(data->obj);
|
auto comp = static_cast<LottieLayer*>(data->obj);
|
||||||
auto layer = comp->layerById(_idByName(args[0]));
|
auto layer = comp->layerById(_idByName(args[0]));
|
||||||
|
|
||||||
|
@ -1300,6 +1300,8 @@ jerry_value_t LottieExpressions::buildGlobal()
|
||||||
|
|
||||||
jerry_value_t LottieExpressions::evaluate(float frameNo, LottieExpression* exp)
|
jerry_value_t LottieExpressions::evaluate(float frameNo, LottieExpression* exp)
|
||||||
{
|
{
|
||||||
|
if (exp->disabled) return jerry_undefined();
|
||||||
|
|
||||||
buildGlobal(exp);
|
buildGlobal(exp);
|
||||||
|
|
||||||
//main composition
|
//main composition
|
||||||
|
@ -1327,6 +1329,7 @@ jerry_value_t LottieExpressions::evaluate(float frameNo, LottieExpression* exp)
|
||||||
|
|
||||||
if (jerry_value_is_exception(eval) || jerry_value_is_undefined(eval)) {
|
if (jerry_value_is_exception(eval) || jerry_value_is_undefined(eval)) {
|
||||||
TVGERR("LOTTIE", "Failed to dispatch the expressions!");
|
TVGERR("LOTTIE", "Failed to dispatch the expressions!");
|
||||||
|
exp->disabled = true;
|
||||||
return jerry_undefined();
|
return jerry_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -135,6 +135,7 @@ struct LottieExpression
|
||||||
LottieLayer* layer;
|
LottieLayer* layer;
|
||||||
LottieObject* object;
|
LottieObject* object;
|
||||||
LottieProperty* property;
|
LottieProperty* property;
|
||||||
|
bool disabled = false;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
uint32_t key = 0; //the keyframe number repeating to
|
uint32_t key = 0; //the keyframe number repeating to
|
||||||
|
|
Loading…
Add table
Reference in a new issue