VLC 4.0.0-dev
Loading...
Searching...
No Matches
Collaboration diagram for Overflowing arithmetic:

Macros

#define add_overflow(a, b, r)
 Overflowing addition.
#define mul_overflow(a, b, r)
 Overflowing multiplication.

Functions

static bool uadd_overflow (unsigned a, unsigned b, unsigned *res)
static bool uaddl_overflow (unsigned long a, unsigned long b, unsigned long *res)
static bool uaddll_overflow (unsigned long long a, unsigned long long b, unsigned long long *res)
static bool umul_overflow (unsigned a, unsigned b, unsigned *res)
static bool umull_overflow (unsigned long a, unsigned long b, unsigned long *res)
static bool umulll_overflow (unsigned long long a, unsigned long long b, unsigned long long *res)

Detailed Description

Macro Definition Documentation

◆ add_overflow

#define add_overflow ( a,
b,
r )
Value:
_Generic(*(r), \
unsigned: uadd_overflow(a, b, (unsigned *)(r)), \
unsigned long: uaddl_overflow(a, b, (unsigned long *)(r)), \
unsigned long long: uaddll_overflow(a, b, (unsigned long long *)(r)))
static bool uaddll_overflow(unsigned long long a, unsigned long long b, unsigned long long *res)
Definition vlc_common.h:777
static bool uadd_overflow(unsigned a, unsigned b, unsigned *res)
Definition vlc_common.h:756
static bool uaddl_overflow(unsigned long a, unsigned long b, unsigned long *res)
Definition vlc_common.h:766

Overflowing addition.

Converts a and b to the type of *r. Then computes the sum of both conversions while checking for overflow. Finally stores the result in *r.

Parameters
aan integer
ban integer
ra pointer to an integer [OUT]
Return values
falseThe sum did not overflow.
trueThe sum overflowed.

◆ mul_overflow

#define mul_overflow ( a,
b,
r )
Value:
_Generic(*(r), \
unsigned: umul_overflow(a, b, (unsigned *)(r)), \
unsigned long: umull_overflow(a, b, (unsigned long *)(r)), \
unsigned long long: umulll_overflow(a, b, (unsigned long long *)(r)))
static bool umulll_overflow(unsigned long long a, unsigned long long b, unsigned long long *res)
Definition vlc_common.h:851
static bool umull_overflow(unsigned long a, unsigned long b, unsigned long *res)
Definition vlc_common.h:840
static bool umul_overflow(unsigned a, unsigned b, unsigned *res)
Definition vlc_common.h:830

Overflowing multiplication.

Converts a and b to the type of *r. Then computes the product of both conversions while checking for overflow. Finally stores the result in *r.

Parameters
aan integer
ban integer
ra pointer to an integer [OUT]
Return values
falseThe product did not overflow.
trueThe product overflowed.

Referenced by vlc_alloc(), and vlc_reallocarray().

Function Documentation

◆ uadd_overflow()

bool uadd_overflow ( unsigned a,
unsigned b,
unsigned * res )
inlinestatic

◆ uaddl_overflow()

bool uaddl_overflow ( unsigned long a,
unsigned long b,
unsigned long * res )
inlinestatic

◆ uaddll_overflow()

bool uaddll_overflow ( unsigned long long a,
unsigned long long b,
unsigned long long * res )
inlinestatic

◆ umul_overflow()

bool umul_overflow ( unsigned a,
unsigned b,
unsigned * res )
inlinestatic

◆ umull_overflow()

bool umull_overflow ( unsigned long a,
unsigned long b,
unsigned long * res )
inlinestatic

◆ umulll_overflow()

bool umulll_overflow ( unsigned long long a,
unsigned long long b,
unsigned long long * res )
inlinestatic