Merge #9525 'STRICT_ADD, STRICT_SUB: Log error'

This commit is contained in:
Justin M. Keyes
2019-01-20 12:32:41 +01:00
committed by GitHub
4 changed files with 20 additions and 4 deletions

View File

@@ -71,5 +71,6 @@
#define ENDIAN_INCLUDE_FILE <@ENDIAN_INCLUDE_FILE@>
#cmakedefine HAVE_EXECINFO_BACKTRACE
#cmakedefine HAVE_BUILTIN_ADD_OVERFLOW
#endif // AUTO_CONFIG_H

View File

@@ -1,6 +1,8 @@
#ifndef NVIM_ASSERT_H
#define NVIM_ASSERT_H
#include "auto/config.h"
// support static asserts (aka compile-time asserts)
// some compilers don't properly support short-circuiting apparently, giving
@@ -133,9 +135,14 @@
///
/// @param MAX Maximum value of the narrowest type of operand.
/// Not used if compiler supports __builtin_add_overflow.
#if HAVE_BUILTIN_ADD_OVERFLOW
#ifdef HAVE_BUILTIN_ADD_OVERFLOW
# define STRICT_ADD(a, b, c, t) \
do { if (__builtin_add_overflow(a, b, c)) { abort(); } } while (0)
do { \
if (__builtin_add_overflow(a, b, c)) { \
ELOG("STRICT_ADD overflow"); \
abort(); \
} \
} while (0)
#else
# define STRICT_ADD(a, b, c, t) \
do { *(c) = (t)(a + b); } while (0)
@@ -143,9 +150,14 @@
/// @def STRICT_SUB
/// @brief Subtracts (a - b) and stores result in `c`. Aborts on overflow.
#if HAVE_BUILTIN_ADD_OVERFLOW
#ifdef HAVE_BUILTIN_ADD_OVERFLOW
# define STRICT_SUB(a, b, c, t) \
do { if (__builtin_sub_overflow(a, b, c)) { abort(); } } while (0)
do { \
if (__builtin_sub_overflow(a, b, c)) { \
ELOG("STRICT_SUB overflow"); \
abort(); \
} \
} while (0)
#else
# define STRICT_SUB(a, b, c, t) \
do { *(c) = (t)(a - b); } while (0)

View File

@@ -12,6 +12,7 @@
#endif
#include <uv.h>
#include "auto/config.h"
#include "nvim/log.h"
#include "nvim/types.h"
#include "nvim/os/os.h"

View File

@@ -4,6 +4,8 @@
#include <stdio.h>
#include <stdbool.h>
#include "auto/config.h"
#define DEBUG_LOG_LEVEL 0
#define INFO_LOG_LEVEL 1
#define WARN_LOG_LEVEL 2