OSDN Git Service

_vfprintf.c: de-obfuscate badly twisted fragment. no code changes.
authorDenys Vlasenko <dvlasenk@redhat.com>
Tue, 19 Oct 2010 12:46:05 +0000 (14:46 +0200)
committerDenys Vlasenko <dvlasenk@redhat.com>
Tue, 19 Oct 2010 12:46:05 +0000 (14:46 +0200)
objdump confirms that I did not mess it up.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
libc/stdio/_vfprintf.c

index 721efe2..8c5e0e7 100644 (file)
@@ -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;