From 984e74b6df47fe33622a06e6995324f706b8f936 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 19 Oct 2010 14:46:05 +0200 Subject: _vfprintf.c: de-obfuscate badly twisted fragment. no code changes. objdump confirms that I did not mess it up. Signed-off-by: Denys Vlasenko --- libc/stdio/_vfprintf.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'libc/stdio') diff --git a/libc/stdio/_vfprintf.c b/libc/stdio/_vfprintf.c index 721efe2f7..8c5e0e76c 100644 --- a/libc/stdio/_vfprintf.c +++ b/libc/stdio/_vfprintf.c @@ -1059,16 +1059,14 @@ int attribute_hidden _ppfs_parsespec(ppfs_t *ppfs) } #endif #ifdef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__ - /* Handle custom arg -- WARNING -- overwrites p!!! */ ppfs->conv_num = CONV_custom0; p = _custom_printf_spec; do { if (*p == *fmt) { - if ((ppfs->num_data_args - = ((*_custom_printf_arginfo[(int)(p-_custom_printf_spec)]) - (&(ppfs->info), MAX_ARGS_PER_SPEC, argtype+2))) - > MAX_ARGS_PER_SPEC) { + printf_arginfo_function *fp = _custom_printf_arginfo[(int)(p - _custom_printf_spec)]; + ppfs->num_data_args = fp(&(ppfs->info), MAX_ARGS_PER_SPEC, argtype + 2); + if (ppfs->num_data_args > MAX_ARGS_PER_SPEC) { break; /* Error -- too many args! */ } goto DONE; -- cgit v1.2.3