六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 157|回复: 0

Postgresql源码中的加法函数:Size add_size(Size s1, Size s2)

[复制链接]

升级  66%

7

主题

7

主题

7

主题

童生

Rank: 1

积分
33
 楼主| 发表于 2013-1-30 01:35:12 | 显示全部楼层 |阅读模式
看到这个函数真是佩服他们的谨慎。一个简单的加法函数,居然写成这样。
/* * Add two Size values, checking for overflow */Sizeadd_size(Size s1, Size s2){Sizeresult;result = s1 + s2;/* We are assuming Size is an unsigned type here... */if (result < s1 || result < s2)ereport(ERROR,(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("requested shared memory size overflows size_t")));return result;}
还考虑了溢出,真够谨慎的。
下面是乘法函数
/* * Multiply two Size values, checking for overflow */Sizemul_size(Size s1, Size s2){Sizeresult;if (s1 == 0 || s2 == 0)return 0;result = s1 * s2;/* We are assuming Size is an unsigned type here... */if (result / s2 != s1)ereport(ERROR,(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("requested shared memory size overflows size_t")));return result;}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表