Loading...
stdio/FreeBSD/xprintf.c Libc-1725.40.4 Libc-997.90.3
--- Libc/Libc-1725.40.4/stdio/FreeBSD/xprintf.c
+++ Libc/Libc-997.90.3/stdio/FreeBSD/xprintf.c
@@ -62,7 +62,6 @@
 #include "xprintf_private.h"
 #include "xprintf_domain.h"
 #include "fvwrite.h"
-#include "libc_hooks_impl.h"
 
 /*
  * Defining XPRINTF_DEBUG allows the __private_extern__ variable __use_xprintf
@@ -243,26 +242,25 @@
 __private_extern__ int
 __printf_render_n(FILE *io __unused, const struct printf_info *pi, const void *const *arg)
 {
-	void *ptr = (void*)arg[0];
-	if (pi->is_char) {
-		LIBC_HOOKS_WRITE_SIMPLE_TYPE(ptr, signed char, pi->sofar);
-	} else if (pi->is_short) {
-		LIBC_HOOKS_WRITE_SIMPLE_TYPE(ptr, short, pi->sofar);
-	} else if (pi->is_long) {
-		LIBC_HOOKS_WRITE_SIMPLE_TYPE(ptr, long, pi->sofar);
-	} else if (pi->is_long_double) {
-		LIBC_HOOKS_WRITE_SIMPLE_TYPE(ptr, long long, pi->sofar);
-	} else if (pi->is_intmax) {
-		LIBC_HOOKS_WRITE_SIMPLE_TYPE(ptr, intmax_t, pi->sofar);
-	} else if (pi->is_ptrdiff) {
-		LIBC_HOOKS_WRITE_SIMPLE_TYPE(ptr, ptrdiff_t, pi->sofar);
-	} else if (pi->is_quad) {
-		LIBC_HOOKS_WRITE_SIMPLE_TYPE(ptr, quad_t, pi->sofar);
-	} else if (pi->is_size) {
-		LIBC_HOOKS_WRITE_SIMPLE_TYPE(ptr, size_t, pi->sofar);
-	} else {
-		LIBC_HOOKS_WRITE_SIMPLE_TYPE(ptr, int, pi->sofar);
-	}
+
+	if (pi->is_char)
+		**((signed char **)arg[0]) = (signed char)pi->sofar;
+	else if (pi->is_short)
+		**((short **)arg[0]) = (short)pi->sofar;
+	else if (pi->is_long)
+		**((long **)arg[0]) = pi->sofar;
+	else if (pi->is_long_double)
+		**((long long **)arg[0]) = pi->sofar;
+	else if (pi->is_intmax)
+		**((intmax_t **)arg[0]) = pi->sofar;
+	else if (pi->is_ptrdiff)
+		**((ptrdiff_t **)arg[0]) = pi->sofar;
+	else if (pi->is_quad)
+		**((quad_t **)arg[0]) = pi->sofar;
+	else if (pi->is_size)
+		**((size_t **)arg[0]) = pi->sofar;
+	else
+		**((int **)arg[0]) = pi->sofar;
 
 	return (0);
 }
@@ -819,18 +817,12 @@
 		case PA_POINTER:
 			pc->args[ch].pvoidarg = va_arg (ap, void *);
 			break;
-		case PA_STRING: {
-			char *s = va_arg(ap, char *);
-			libc_hooks_will_read_cstring(s);
-			pc->args[ch].pchararg = s;
-			break;
-		}
-		case PA_WSTRING: {
-			wchar_t *wcs = va_arg(ap, wchar_t *);
-			libc_hooks_will_read_wcstring(wcs);
-			pc->args[ch].pwchararg = wcs;
-			break;
-		}
+		case PA_STRING:
+			pc->args[ch].pchararg = va_arg (ap, char *);
+			break;
+		case PA_WSTRING:
+			pc->args[ch].pwchararg = va_arg (ap, wchar_t *);
+			break;
 		case PA_DOUBLE:
 #ifndef NO_FLOATING_POINT
 			pc->args[ch].doublearg = va_arg (ap, double);
@@ -924,9 +916,6 @@
 	struct _printf_compiled spc;
 	int ret, saverrno;
 
-	libc_hooks_will_read(loc, sizeof(*loc));
-	libc_hooks_will_read_cstring(fmt);
-
 	/*
 	 * All the printf family (including extensible printf variants) funnel
 	 * down to this point.  So we can do common work here, and then fork
@@ -967,7 +956,7 @@
 	bzero(&spc, sizeof(spc));
 	spc.fmt = fmt;
 	DEFAULT_CURRENT_LOCALE(loc);
-	xlocale_retain(loc);
+	XL_RETAIN(loc);
 	spc.loc = loc;
 	/*
 	 * We don't need to lock the printf_comp_t mutex, since the
@@ -977,14 +966,14 @@
 	if (__printf_comp(&spc, domain) < 0) {
 	    saverrno = errno;
 	    pthread_rwlock_unlock(&domain->rwlock);
-	    xlocale_release(loc);
+	    XL_RELEASE(loc);
 	    errno = saverrno;
 	    return EOF;
 	}
 	ret = __printf_exec(&spc, fp, ap);
 	saverrno = errno;
 	pthread_rwlock_unlock(&domain->rwlock);
-	xlocale_release(loc);
+	XL_RELEASE(loc);
 
 #ifdef XPRINTF_PERF
 	printf_info_enqueue(spc.pa);