1 From 3754d92809b7067a98e38a19ea4e10b36ad52bc7 Mon Sep 17 00:00:00 2001 2 From: Carl Norum <carl (a] norum.ca> 3 Date: Sun, 27 Apr 2014 22:21:24 -0700 4 Subject: [PATCH 07/12] Fix libc++ compiler error when calling std::feof() 5 6 The following functions are "macro" in bionic's stdio.h and also 7 defined in cstdio's std:: getchar, putchar, clearerr, feof, ferror 8 9 Undef them and re-define as inlined functions otherwise use of 10 std::feof, for example, break compilation. 11 12 See b.android.com/66668 and b.android.com/36496 13 --- 14 include/cstdio | 30 ++++++++++++++++++++++++++++++ 15 1 file changed, 30 insertions(+) 16 17 diff --git a/include/cstdio b/include/cstdio 18 index ce3af4d..7787fad 100644 19 --- a/include/cstdio 20 +++ b/include/cstdio 21 @@ -114,12 +114,42 @@ inline _LIBCPP_INLINE_VISIBILITY int __libcpp_getc(FILE* __stream) {return getc( 22 inline _LIBCPP_INLINE_VISIBILITY int getc(FILE* __stream) {return __libcpp_getc(__stream);} 23 #endif // getc 24 25 +#ifdef getchar 26 +inline _LIBCPP_INLINE_VISIBILITY int __libcpp_getchar(void) {return getchar();} 27 +#undef getchar 28 +inline _LIBCPP_INLINE_VISIBILITY int getchar(void) {return __libcpp_getchar();} 29 +#endif // getchar 30 + 31 #ifdef putc 32 inline _LIBCPP_INLINE_VISIBILITY int __libcpp_putc(int __c, FILE* __stream) {return putc(__c, __stream);} 33 #undef putc 34 inline _LIBCPP_INLINE_VISIBILITY int putc(int __c, FILE* __stream) {return __libcpp_putc(__c, __stream);} 35 #endif // putc 36 37 +#ifdef putchar 38 +inline _LIBCPP_INLINE_VISIBILITY int __libcpp_putchar(int __c) {return putchar(__c);} 39 +#undef putchar 40 +inline _LIBCPP_INLINE_VISIBILITY int putchar(int __c) {return __libcpp_putchar(__c);} 41 +#endif // putchar 42 + 43 +#ifdef clearerr 44 +inline _LIBCPP_INLINE_VISIBILITY void __libcpp_clearerr(FILE* __stream) {return clearerr(__stream);} 45 +#undef clearerr 46 +inline _LIBCPP_INLINE_VISIBILITY void clearerr(FILE* __stream) {return __libcpp_clearerr(__stream);} 47 +#endif // clearerr 48 + 49 +#ifdef feof 50 +inline _LIBCPP_INLINE_VISIBILITY int __libcpp_feof(FILE* __stream) {return feof(__stream);} 51 +#undef feof 52 +inline _LIBCPP_INLINE_VISIBILITY int feof(FILE* __stream) {return __libcpp_feof(__stream);} 53 +#endif // feof 54 + 55 +#ifdef ferror 56 +inline _LIBCPP_INLINE_VISIBILITY int __libcpp_ferror(FILE* __stream) {return ferror(__stream);} 57 +#undef ferror 58 +inline _LIBCPP_INLINE_VISIBILITY int ferror(FILE* __stream) {return __libcpp_ferror(__stream);} 59 +#endif // ferror 60 + 61 _LIBCPP_BEGIN_NAMESPACE_STD 62 63 using ::FILE; 64 -- 65 1.9.1.423.g4596e3a 66 67