Add Asan profile, fix multiple bugs.

Added Asan profile to help catch and fix various bugs (and indeed, there
were few of them).

Additionally, fixed bhunit macro to process arguments only once.
This commit is contained in:
2025-01-29 09:19:34 +03:00
parent 47c21a2035
commit 6ede63e18f
8 changed files with 78 additions and 21 deletions

View File

@@ -2,26 +2,37 @@
#define BH_UNIT_H
#include <stdio.h>
#include <math.h>
typedef int (*bh_unit_cb_t)(void);
#define BH_VERIFY(e) \
do { if (!(e)) { \
printf("%s:%d\t%s\n", __FILE__, __LINE__, #e); \
return -1; \
} } while(0)
do { \
if (!(e)) { \
printf("%s:%d\t%s\n", __FILE__, __LINE__, #e); \
return -1; \
} \
} while(0)
#define BH_FAIL(msg) \
do { printf("%s:%d\t%s\n", __FILE__, __LINE__, msg); \
return -1; } while(0)
do { \
printf("%s:%d\t%s\n", __FILE__, __LINE__, msg); \
return -1; \
} while(0)
#define BH_VERIFY_DELTA(x, y, e) \
do { if ((((x)>(y))?((x)-(y)):((y)-(x)))>(e)) { \
printf("%s:%d\t%s\n", __FILE__, __LINE__, #x " == " #y); \
return -1; \
} while (0)
do { \
double BH_VERIFY_DELTA = (x)-(y); \
if (BH_VERIFY_DELTA < 0.0) \
BH_VERIFY_DELTA = -BH_VERIFY_DELTA; \
if (BH_VERIFY_DELTA > (e)) { \
printf("%s:%d\t%s (differs by %f)\n", __FILE__, __LINE__, #x " == " #y, BH_VERIFY_DELTA); \
return -1; \
} \
} while(0)
void bh_unit_add(const char *name, bh_unit_cb_t func);
int bh_unit_run(void);