#include "postgres.h"
+#include "common/int.h"
#include "fmgr.h"
#include "funcapi.h"
#include "miscadmin.h"
{
Size result;
- result = s1 + s2;
- /* We are assuming Size is an unsigned type here... */
- if (result < s1 || result < s2)
+ if (pg_add_size_overflow(s1, s2, &result))
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("requested shared memory size overflows size_t")));
{
Size result;
- if (s1 == 0 || s2 == 0)
- return 0;
- result = s1 * s2;
- /* We are assuming Size is an unsigned type here... */
- if (result / s2 != s1)
+ if (pg_mul_size_overflow(s1, s2, &result))
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("requested shared memory size overflows size_t")));