Fixed va_arg() to work for small args (as in stdarg.h).
This commit is contained in:
parent
8a77722ad7
commit
c8f8a520f6
@ -36,7 +36,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)varargs.h 8.2 (Berkeley) 3/22/94
|
||||
* $Id: varargs.h,v 1.5 1997/02/22 09:35:22 peter Exp $
|
||||
* $Id: varargs.h,v 1.6 1997/02/28 07:12:34 bde Exp $
|
||||
*/
|
||||
|
||||
#ifndef _VARARGS_H_
|
||||
@ -44,6 +44,9 @@
|
||||
|
||||
typedef char *va_list;
|
||||
|
||||
#define __va_size(type) \
|
||||
(((sizeof(type) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define va_alist __builtin_va_alist
|
||||
#endif
|
||||
@ -54,16 +57,10 @@ typedef char *va_list;
|
||||
#endif
|
||||
|
||||
#define va_start(ap) \
|
||||
ap = (char *)&va_alist
|
||||
((ap) = (va_list)&va_alist)
|
||||
|
||||
#ifdef KERNEL
|
||||
#define va_arg(ap, type) \
|
||||
((type *)(ap += sizeof(type)))[-1]
|
||||
#else
|
||||
#define va_arg(ap, type) \
|
||||
((type *)(ap += sizeof(type) < sizeof(int) ? \
|
||||
(abort(), 0) : sizeof(type)))[-1]
|
||||
#endif
|
||||
(*(type *)((ap) += __va_size(type), (ap) - __va_size(type)))
|
||||
|
||||
#define va_end(ap)
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)varargs.h 8.2 (Berkeley) 3/22/94
|
||||
* $Id: varargs.h,v 1.5 1997/02/22 09:35:22 peter Exp $
|
||||
* $Id: varargs.h,v 1.6 1997/02/28 07:12:34 bde Exp $
|
||||
*/
|
||||
|
||||
#ifndef _VARARGS_H_
|
||||
@ -44,6 +44,9 @@
|
||||
|
||||
typedef char *va_list;
|
||||
|
||||
#define __va_size(type) \
|
||||
(((sizeof(type) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define va_alist __builtin_va_alist
|
||||
#endif
|
||||
@ -54,16 +57,10 @@ typedef char *va_list;
|
||||
#endif
|
||||
|
||||
#define va_start(ap) \
|
||||
ap = (char *)&va_alist
|
||||
((ap) = (va_list)&va_alist)
|
||||
|
||||
#ifdef KERNEL
|
||||
#define va_arg(ap, type) \
|
||||
((type *)(ap += sizeof(type)))[-1]
|
||||
#else
|
||||
#define va_arg(ap, type) \
|
||||
((type *)(ap += sizeof(type) < sizeof(int) ? \
|
||||
(abort(), 0) : sizeof(type)))[-1]
|
||||
#endif
|
||||
(*(type *)((ap) += __va_size(type), (ap) - __va_size(type)))
|
||||
|
||||
#define va_end(ap)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user