Add assert()s.

This commit is contained in:
Simon Ruderich
2013-06-13 21:33:27 +02:00
parent 37cb5686de
commit 6d6ad4423a
3 changed files with 33 additions and 1 deletions

6
README
View File

@@ -73,8 +73,12 @@ DEBUG
To enable debug mode, configure coloredstderr with '--enable-debug'.
*Important:* Debug mode enables `assert()`s in the code which might abort the
process if an error condition is detected!
Debug mode is slower than normal mode. To log only warnings without the
overhead of debug mode use '--enable-warnings'.
overhead of debug mode use '--enable-warnings'. `assert()`s are not enabled
with '--enable-warnings', so it's safe to use.
Debug messages are written to the file `colored_stderr_debug_log.txt` in the
current working directory _if_ it exists. If it exists debug messages are

View File

@@ -25,6 +25,12 @@
/* Must be loaded before the following headers. */
#include "ldpreload.h"
/* Disable assert()s if not compiled with --enable-debug. */
#ifndef DEBUG
# define NDEBUG
#endif
#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <stdarg.h>
@@ -78,6 +84,8 @@ static int force_write_to_non_tty;
* additional call. */
static int isatty_noinline(int fd) noinline;
static int isatty_noinline(int fd) {
assert(fd >= 0);
int saved_errno = errno;
int result = isatty(fd);
errno = saved_errno;
@@ -91,6 +99,8 @@ static void dup_fd(int oldfd, int newfd) {
debug("%3d -> %3d\t\t\t[%d]\n", oldfd, newfd, getpid());
#endif
assert(oldfd >= 0 && newfd >= 0);
if (unlikely(!initialized)) {
init_from_environment();
}
@@ -113,6 +123,8 @@ static void close_fd(int fd) {
debug("%3d -> .\t\t\t[%d]\n", fd, getpid());
#endif
assert(fd >= 0);
if (unlikely(!initialized)) {
init_from_environment();
}

View File

@@ -51,6 +51,8 @@ static void tracked_fds_debug(void) {
#endif
static int init_tracked_fds_list(size_t count) {
assert(count > 0);
/* Reduce reallocs. */
count += TRACKFDS_REALLOC_STEP;
@@ -164,6 +166,8 @@ next:
}
static char *update_environment_buffer_entry(char *x, int fd) {
assert(fd >= 0);
int length = snprintf(x, 10 + 1, "%d", fd);
if (length >= 10 + 1) {
/* Integer too big to fit the buffer, skip it. */
@@ -183,6 +187,8 @@ static char *update_environment_buffer_entry(char *x, int fd) {
return x;
}
static void update_environment_buffer(char *x) {
assert(initialized);
size_t i;
for (i = 0; i < TRACKFDS_STATIC_COUNT; i++) {
if (tracked_fds[i]) {
@@ -194,6 +200,8 @@ static void update_environment_buffer(char *x) {
}
}
inline static size_t update_environment_buffer_size(void) {
assert(initialized);
/* Use the maximum count (TRACKFDS_STATIC_COUNT) of used descriptors
* because it's simple and small enough not to be a problem.
*
@@ -229,6 +237,8 @@ static void update_environment(void) {
static void tracked_fds_add(int fd) {
assert(fd >= 0);
if (fd < TRACKFDS_STATIC_COUNT) {
tracked_fds[fd] = 1;
#if 0
@@ -269,6 +279,8 @@ static void tracked_fds_add(int fd) {
#endif
}
static int tracked_fds_remove(int fd) {
assert(fd >= 0);
if (fd < TRACKFDS_STATIC_COUNT) {
int old_value = tracked_fds[fd];
tracked_fds[fd] = 0;
@@ -314,6 +326,8 @@ static int tracked_fds_find_slow(int fd) noinline;
*/
inline static int tracked_fds_find(int fd) always_inline;
static int tracked_fds_find(int fd) {
assert(fd >= 0);
if (fd < TRACKFDS_STATIC_COUNT) {
return tracked_fds[fd];
}
@@ -321,6 +335,8 @@ static int tracked_fds_find(int fd) {
return tracked_fds_find_slow(fd);
}
static int tracked_fds_find_slow(int fd) {
assert(initialized);
if (tracked_fds_list_count == 0) {
return 0;
}