gozfree / gear-lib

Gear-Lib, C library for IOT Embedded Multimedia and Network
MIT License
2.97k stars 805 forks source link

sem_lock_wait存在时间运算溢出问题 #108

Open xkf321 opened 5 months ago

xkf321 commented 5 months ago

clock_gettime(CLOCK_REALTIME, &ts); uint64_t ns = ts.tv_sec 1000 1000 1000 + ts.tv_nsec; ns += ms 1000 1000; ts.tv_sec = ns / (1000 1000 1000); ts.tv_nsec = ns % 1000 1000 * 1000; ret = sem_timedwait(lock, &ts);

uint64_t ns = ts.tv_sec 1000 1000 * 1000 + ts.tv_nsec; 运行平台为arm32,计算ns 时会使用uint32类型,导致运算出现溢出, ts.tv_sec前增加强制转换为 uint64_t 可以解决