* lib/mbsrtoc32s.c (USES_C32): New macro.
* lib/mbsrtowcs.c (USES_C32): New macro.
* lib/mbsrtowcs-impl.h (FUNC): If USES_C32 and mbrtoc32 returned
(size_t)(-3), don't increment the pointer.
+2023-07-02 Bruno Haible <bruno@clisp.org>
+
+ mbsrtoc32s: Accommodate a difference between mbrtowc and mbrtoc32.
+ * lib/mbsrtoc32s.c (USES_C32): New macro.
+ * lib/mbsrtowcs.c (USES_C32): New macro.
+ * lib/mbsrtowcs-impl.h (FUNC): If USES_C32 and mbrtoc32 returned
+ (size_t)(-3), don't increment the pointer.
+
2023-07-02 Bruno Haible <bruno@clisp.org>
mbsnrtoc32s: Accommodate a difference between mbrtowc and mbrtoc32.
# define DCHAR_T char32_t
# define INTERNAL_STATE _gl_mbsrtoc32s_state
# define MBRTOWC mbrtoc32
+# define USES_C32 1
# include "mbsrtowcs-impl.h"
#else
/* Here mbsinit (ps). */
break;
}
- src += ret;
+ if (!(USES_C32 && ret == (size_t)(-3)))
+ src += ret;
}
*srcp = src;
#define DCHAR_T wchar_t
#define INTERNAL_STATE _gl_mbsrtowcs_state
#define MBRTOWC mbrtowc
+#define USES_C32 0
#include "mbsrtowcs-impl.h"