BigW Consortium Gitlab

Commit 2353ca06 by Gabor Kiss-Vamosi

fix overflow in lv_anim_speed_to_time

parent 8bc5770c
...@@ -115,7 +115,9 @@ bool lv_anim_del(void * var, lv_anim_fp_t fp) ...@@ -115,7 +115,9 @@ bool lv_anim_del(void * var, lv_anim_fp_t fp)
uint16_t lv_anim_speed_to_time(uint16_t speed, int32_t start, int32_t end) uint16_t lv_anim_speed_to_time(uint16_t speed, int32_t start, int32_t end)
{ {
int32_t d = LV_MATH_ABS((int32_t) start - end); int32_t d = LV_MATH_ABS((int32_t) start - end);
uint16_t time = (int32_t)((int32_t)(d * 1000) / speed); uint32_t time = (int32_t)((int32_t)(d * 1000) / speed);
if(time > UINT16_MAX) time = UINT16_MAX;
if(time == 0) { if(time == 0) {
time++; time++;
......
...@@ -43,7 +43,7 @@ typedef struct _lv_anim_t ...@@ -43,7 +43,7 @@ typedef struct _lv_anim_t
lv_anim_path_t path; /*An array with the steps of animations*/ lv_anim_path_t path; /*An array with the steps of animations*/
int32_t start; /*Start value*/ int32_t start; /*Start value*/
int32_t end; /*End value*/ int32_t end; /*End value*/
int16_t time; /*Animation time in ms*/ uint16_t time; /*Animation time in ms*/
int16_t act_time; /*Current time in animation. Set to negative to make delay.*/ int16_t act_time; /*Current time in animation. Set to negative to make delay.*/
uint16_t playback_pause; /*Wait before play back*/ uint16_t playback_pause; /*Wait before play back*/
uint16_t repeat_pause; /*Wait before repeat*/ uint16_t repeat_pause; /*Wait before repeat*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment