summaryrefslogtreecommitdiff
path: root/src/__checked_i.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/__checked_i.c')
-rw-r--r--src/__checked_i.c34
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);