libarchive: Workaround mbsnrtowcs assertion failure on old glibc

The CMake TarTest fails with the error

 mbsnrtowcs.c:116: __mbsnrtowcs: Assertion
  `status == GCONV_OK || status != GCONV_EMPTY_INPUT ||
   status == GCONV_ILLEGAL_INPUT || status == GCONV_INCOMPLETE_INPUT ||
   status == GCONV_FULL_OUTPUT' failed.

on very old glibc versions.  Work around the problem by pretending that
mbsnrtowcs does not exist.  Libarchive will fall back to mbrtowc.
This commit is contained in:
Brad King 2012-02-10 15:16:06 -05:00
parent d4a9e334d3
commit ca7790240c
1 changed files with 5 additions and 0 deletions

View File

@ -76,6 +76,11 @@
#define __FBSDID(a) struct _undefined_hack #define __FBSDID(a) struct _undefined_hack
#endif #endif
/* Old glibc mbsnrtowcs fails assertions in our use case. */
#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ <= 1
# undef HAVE_MBSNRTOWCS
#endif
/* Try to get standard C99-style integer type definitions. */ /* Try to get standard C99-style integer type definitions. */
#if HAVE_INTTYPES_H #if HAVE_INTTYPES_H
#include <inttypes.h> #include <inttypes.h>