diff options
Diffstat (limited to 'src/__checked_i.c')
-rw-r--r-- | src/__checked_i.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/__checked_i.c b/src/__checked_i.c index cbb6ae87..c97a9b4d 100644 --- a/src/__checked_i.c +++ b/src/__checked_i.c @@ -1,3 +1,5 @@ +#undef __UNG_INTERNAL__ + #include <ctype.h> #include <complex.h> // TODO #include <fenv.h> @@ -13,7 +15,7 @@ #include <threads.h> // TODO #include <time.h> // TODO #include <uchar.h> // TODO -#include <wchar.h> // TODO +//#include <wchar.h> // TODO #include <wctype.h> // TODO #include "_assert.h" @@ -45,6 +47,7 @@ int __checked_i(const char *file, const char *func, unsigned long long line, int || fn == F(fetestexcept) || fn == F(raise) || fn == F(putchar) + || fn == F(abs) ) { int arg = va_arg(ap, int); ret = fn(arg); @@ -124,6 +127,12 @@ int __checked_i(const char *file, const char *func, unsigned long long line, int const char *p2 = va_arg(ap, const char *); size_t n = va_arg(ap, size_t); ret = fn(p1, p2, n); + } else if (fn == F(atexit)) { + void *p = va_arg(ap, void *); + ret = fn(p); + } else { + (fprintf)(stderr, "Unwrapped function %s\n", func); + (_Exit(1)); } va_end(ap); @@ -169,6 +178,9 @@ intmax_t __checked_im(const char *file, const char *func, unsigned long long lin char *s1 = va_arg(ap, char *); char *s2 = va_arg(ap, char *); ret = fn(s1, s2); + } else { + (fprintf)(stderr, "Unwrapped function %s\n", func); + (_Exit(1)); } va_end(ap); @@ -202,6 +214,9 @@ uintmax_t __checked_uim(const char *file, const char *func, unsigned long long l wchar_t **end = va_arg(ap, wchar_t **); int i = va_arg(ap, int); ret = fn(s, end, i); + } else { + (fprintf)(stderr, "Unwrapped function %s\n", func); + (_Exit(1)); } va_end(ap); @@ -229,6 +244,9 @@ imaxdiv_t __checked_imd(const char *file, const char *func, unsigned long long l intmax_t n = va_arg(ap, intmax_t); intmax_t d = va_arg(ap, intmax_t); ret = fn(n, d); + } else { + (fprintf)(stderr, "Unwrapped function %s\n", func); + (_Exit(1)); } va_end(ap); @@ -323,6 +341,9 @@ void *__checked_p(const char *file, const char *func, unsigned long long line, v char *s1 = va_arg(ap, char *); char *s2 = va_arg(ap, char *); ret = fn(s1, s2); + } else { + (fprintf)(stderr, "Unwrapped function %s\n", func); + (_Exit(1)); } va_end(ap); @@ -357,6 +378,11 @@ void __checked(const char *file, const char *func, unsigned long long line, void FILE *f = va_arg(ap, FILE *); char *b = va_arg(ap, char *); fn(f, b); + } else if (fn == F(abort)) { + fn(); + } else { + (fprintf)(stderr, "Unwrapped function %s\n", func); + (_Exit(1)); } va_end(ap); @@ -398,6 +424,9 @@ size_t __checked_s(const char *file, const char *func, unsigned long long line, const char *s2 = va_arg(ap, const char *); size_t n = va_arg(ap, size_t); ret = fn(s1, s2, n); + } else { + (fprintf)(stderr, "Unwrapped function %s\n", func); + (_Exit(1)); } va_end(ap); @@ -424,6 +453,9 @@ long __checked_l(const char *file, const char *func, unsigned long long line, lo if (fn == F(ftell)) { FILE *f = va_arg(ap, FILE *); ret = fn(f); + } else { + (fprintf)(stderr, "Unwrapped function %s\n", func); + (_Exit(1)); } va_end(ap); |