C23的一个溢出检测增强
时间回退到公元2009年,笔者在blackfin arch上面工作,有一个IP通话的软件(我甚至已经忘了它的名字),在测试过程中,时不时会随机挂断或者crash。这个ktime会在2038年溢出,而两个ktime_add则会在更早的时间点溢出。__builtin_add_overflow 是一个编译器内建函数(builtin),不是标准 C 的一部分,但在GCC 和Clang 里都支持。在很久很久以前,大森林里面住着许多奇妙的生灵。从那一天开始,笔者就对运算溢出保持着本能的警惕,进入防御性编程的模式。