Skip to content

Commit f3498b9

Browse files
committed
Change definition of mbstate_t to match glibc
1 parent cd2f0fe commit f3498b9

5 files changed

Lines changed: 14 additions & 9 deletions

File tree

include/wchar.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ extern "C" {
3131

3232
typedef struct
3333
{
34-
unsigned __opaque1, __opaque2;
34+
long __count;
35+
union
36+
{
37+
unsigned long __wch;
38+
char __wchb[4];
39+
} __value; /* Value so far. */
3540
} mbstate_t;
3641

3742
wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict);

multibyte/mbrtowc.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ size_t mbrtowc(wchar_t *__restrict wc, const char *__restrict src, size_t n, mbs
2020
wchar_t dummy;
2121

2222
if (!st) st = &internal_state;
23-
c = st->__opaque1;
23+
c = st->__value.__wch;
2424

2525
if (!s) {
2626
if (c) goto ilseq;
@@ -39,7 +39,7 @@ size_t mbrtowc(wchar_t *__restrict wc, const char *__restrict src, size_t n, mbs
3939
loop:
4040
c = (c<<6) | (*s++-0x80); n--;
4141
if (!(c&(1U<<31))) {
42-
st->__opaque1 = 0;
42+
st->__value.__wch = 0;
4343
*wc = c;
4444
return N-n;
4545
}
@@ -49,10 +49,10 @@ size_t mbrtowc(wchar_t *__restrict wc, const char *__restrict src, size_t n, mbs
4949
}
5050
}
5151

52-
st->__opaque1 = c;
52+
st->__value.__wch = c;
5353
return -2;
5454
ilseq:
55-
st->__opaque1 = 0;
55+
st->__value.__wch = 0;
5656
errno = EILSEQ;
5757
return -1;
5858
}

multibyte/mbsinit.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@
1313

1414
int mbsinit(const mbstate_t *st)
1515
{
16-
return !st || !st->__opaque1;
16+
return !st || !st->__count;
1717
}

multibyte/mbsnrtowcs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ size_t mbsnrtowcs(wchar_t *__restrict wcs, const char **__restrict src, size_t n
5252
break;
5353
}
5454
/* have to roll back partial character */
55-
st->__opaque1 = 0;
55+
st->__value.__wch = 0;
5656
break;
5757
}
5858
s += l; n -= l;

multibyte/mbsrtowcs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ size_t mbsrtowcs(wchar_t *__restrict ws, const char **__restrict src, size_t wn,
1717
size_t wn0 = wn;
1818
unsigned c = 0;
1919

20-
if (st && (c = st->__opaque1) != 0) {
20+
if (st && (c = st->__value.__wch) != 0) {
2121
if (ws) {
22-
st->__opaque1 = 0;
22+
st->__value.__wch = 0;
2323
goto resume;
2424
} else {
2525
goto resume0;

0 commit comments

Comments
 (0)