Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 219645 Details for
Bug 279536
sys-boot/grub-0.97 segfaults with >=sys-devel/gcc-4.1 SSP
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Use va_list, va_start, va_arg instead of dataptr++ for variadic functions
fix-variadic.patch (text/plain), 1.98 KB, created by
Anthony Basile
on 2010-02-14 15:41:06 UTC
(
hide
)
Description:
Use va_list, va_start, va_arg instead of dataptr++ for variadic functions
Filename:
MIME Type:
Creator:
Anthony Basile
Created:
2010-02-14 15:41:06 UTC
Size:
1.98 KB
patch
obsolete
>diff -Naur grub-0.97.orig/stage2/char_io.c grub-0.97/stage2/char_io.c >--- grub-0.97.orig/stage2/char_io.c 2010-02-14 09:42:20.000000000 +0000 >+++ grub-0.97/stage2/char_io.c 2010-02-14 09:52:39.000000000 +0000 >@@ -20,6 +20,7 @@ > > #include <shared.h> > #include <term.h> >+#include <stdarg.h> > > #ifdef SUPPORT_HERCULES > # include <hercules.h> >@@ -178,10 +179,11 @@ > void > grub_printf (const char *format,...) > { >- int *dataptr = (int *) &format; >+ va_list ap ; >+ va_start(ap, format); >+ > char c, str[16]; > >- dataptr++; > > while ((c = *(format++)) != 0) > { >@@ -196,17 +198,17 @@ > case 'X': > #endif > case 'u': >- *convert_to_ascii (str, c, *((unsigned long *) dataptr++)) = 0; >+ *convert_to_ascii (str, c, va_arg(ap,unsigned long)) = 0; > grub_putstr (str); > break; > > #ifndef STAGE1_5 > case 'c': >- grub_putchar ((*(dataptr++)) & 0xff); >+ grub_putchar (va_arg(ap,char) & 0xff); > break; > > case 's': >- grub_putstr ((char *) *(dataptr++)); >+ grub_putstr (va_arg(ap,char *)); > break; > #endif > } >@@ -219,12 +221,12 @@ > { > /* XXX hohmuth > ugly hack -- should unify with printf() */ >- int *dataptr = (int *) &format; >+ va_list ap ; >+ va_start(ap, format); >+ > char c, *ptr, str[16]; > char *bp = buffer; > >- dataptr++; >- > while ((c = *format++) != 0) > { > if (c != '%') >@@ -233,7 +235,7 @@ > switch (c = *(format++)) > { > case 'd': case 'u': case 'x': >- *convert_to_ascii (str, c, *((unsigned long *) dataptr++)) = 0; >+ *convert_to_ascii (str, c, va_arg(ap,unsigned long)) = 0; > > ptr = str; > >@@ -241,12 +243,12 @@ > *bp++ = *(ptr++); /* putchar(*(ptr++)); */ > break; > >- case 'c': *bp++ = (*(dataptr++))&0xff; >- /* putchar((*(dataptr++))&0xff); */ >+ case 'c': *bp++ = va_arg(ap,char) & 0xff; >+ /* putchar (va_arg(ap,char) & 0xff); */ > break; > > case 's': >- ptr = (char *) (*(dataptr++)); >+ ptr = va_arg(ap,char *); > > while ((c = *ptr++) != 0) > *bp++ = c; /* putchar(c); */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 279536
:
199500
|
200565
|
219567
| 219645