12345678910111213141516171819202122232425262728 |
- /* Copyright (c) 2003-2004, Roger Dingledine
- * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
- /* See LICENSE for licensing information */
- /**
- * \file addsub.c
- *
- * \brief Helpers for addition and subtraction.
- *
- * Currently limited to non-wrapping (saturating) addition.
- **/
- #include "lib/intmath/addsub.h"
- #include "lib/cc/compat_compiler.h"
- /* Helper: safely add two uint32_t's, capping at UINT32_MAX rather
- * than overflow */
- uint32_t
- tor_add_u32_nowrap(uint32_t a, uint32_t b)
- {
- /* a+b > UINT32_MAX check, without overflow */
- if (PREDICT_UNLIKELY(a > UINT32_MAX - b)) {
- return UINT32_MAX;
- } else {
- return a+b;
- }
- }
|