@@ -37,18 +37,18 @@ TEST_F(LlvmLibcMBRToWCTest, TwoByte) {
37
37
const char ch[2 ] = {static_cast <char >(0xC2 ),
38
38
static_cast <char >(0x8E )}; // car symbol
39
39
wchar_t dest[2 ];
40
- mbstate_t * mb;
40
+ mbstate_t mb;
41
41
LIBC_NAMESPACE::memset (&mb, 0 , sizeof (mbstate_t ));
42
- size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 2 , mb);
42
+ size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 2 , & mb);
43
43
ASSERT_EQ (static_cast <int >(*dest), 142 );
44
44
ASSERT_EQ (static_cast <int >(n), 2 );
45
45
ASSERT_ERRNO_SUCCESS ();
46
46
47
47
// Should fail since we have not read enough
48
- n = LIBC_NAMESPACE::mbrtowc (dest, ch, 1 , mb);
48
+ n = LIBC_NAMESPACE::mbrtowc (dest, ch, 1 , & mb);
49
49
ASSERT_EQ (static_cast <int >(n), -2 );
50
50
// Should pass after reading one more byte
51
- n = LIBC_NAMESPACE::mbrtowc (dest, ch + 1 , 1 , mb);
51
+ n = LIBC_NAMESPACE::mbrtowc (dest, ch + 1 , 1 , & mb);
52
52
ASSERT_EQ (static_cast <int >(n), 1 );
53
53
ASSERT_EQ (static_cast <int >(*dest), 142 );
54
54
ASSERT_ERRNO_SUCCESS ();
@@ -58,19 +58,19 @@ TEST_F(LlvmLibcMBRToWCTest, ThreeByte) {
58
58
const char ch[3 ] = {static_cast <char >(0xE2 ), static_cast <char >(0x88 ),
59
59
static_cast <char >(0x91 )}; // ∑ sigma symbol
60
60
wchar_t dest[2 ];
61
- mbstate_t * mb;
61
+ mbstate_t mb;
62
62
LIBC_NAMESPACE::memset (&mb, 0 , sizeof (mbstate_t ));
63
- size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 3 , mb);
63
+ size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 3 , & mb);
64
64
ASSERT_EQ (static_cast <int >(*dest), 8721 );
65
65
ASSERT_EQ (static_cast <int >(n), 3 );
66
66
ASSERT_ERRNO_SUCCESS ();
67
67
68
68
// Should fail since we have not read enough
69
- n = LIBC_NAMESPACE::mbrtowc (dest, ch, 1 , mb);
69
+ n = LIBC_NAMESPACE::mbrtowc (dest, ch, 1 , & mb);
70
70
ASSERT_EQ (static_cast <int >(n), -2 );
71
71
ASSERT_ERRNO_SUCCESS ();
72
72
// Should pass after reading two more bytes
73
- n = LIBC_NAMESPACE::mbrtowc (dest, ch + 1 , 2 , mb);
73
+ n = LIBC_NAMESPACE::mbrtowc (dest, ch + 1 , 2 , & mb);
74
74
ASSERT_EQ (static_cast <int >(n), 2 );
75
75
ASSERT_EQ (static_cast <int >(*dest), 8721 );
76
76
ASSERT_ERRNO_SUCCESS ();
@@ -81,18 +81,18 @@ TEST_F(LlvmLibcMBRToWCTest, FourByte) {
81
81
static_cast <char >(0xA4 ),
82
82
static_cast <char >(0xA1 )}; // 🤡 clown emoji
83
83
wchar_t dest[2 ];
84
- mbstate_t * mb;
84
+ mbstate_t mb;
85
85
LIBC_NAMESPACE::memset (&mb, 0 , sizeof (mbstate_t ));
86
- size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 4 , mb);
86
+ size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 4 , & mb);
87
87
ASSERT_EQ (static_cast <int >(*dest), 129313 );
88
88
ASSERT_EQ (static_cast <int >(n), 4 );
89
89
ASSERT_ERRNO_SUCCESS ();
90
90
// Should fail since we have not read enough
91
- n = LIBC_NAMESPACE::mbrtowc (dest, ch, 2 , mb);
91
+ n = LIBC_NAMESPACE::mbrtowc (dest, ch, 2 , & mb);
92
92
ASSERT_EQ (static_cast <int >(n), -2 );
93
93
ASSERT_ERRNO_SUCCESS ();
94
94
// Should pass after reading two more bytes
95
- n = LIBC_NAMESPACE::mbrtowc (dest, ch + 2 , 2 , mb);
95
+ n = LIBC_NAMESPACE::mbrtowc (dest, ch + 2 , 2 , & mb);
96
96
ASSERT_EQ (static_cast <int >(n), 2 );
97
97
ASSERT_EQ (static_cast <int >(*dest), 129313 );
98
98
ASSERT_ERRNO_SUCCESS ();
@@ -101,9 +101,9 @@ TEST_F(LlvmLibcMBRToWCTest, FourByte) {
101
101
TEST_F (LlvmLibcMBRToWCTest, InvalidByte) {
102
102
const char ch[1 ] = {static_cast <char >(0x80 )};
103
103
wchar_t dest[2 ];
104
- mbstate_t * mb;
104
+ mbstate_t mb;
105
105
LIBC_NAMESPACE::memset (&mb, 0 , sizeof (mbstate_t ));
106
- size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 1 , mb);
106
+ size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 1 , & mb);
107
107
ASSERT_EQ (static_cast <int >(n), -1 );
108
108
ASSERT_ERRNO_EQ (EILSEQ);
109
109
}
@@ -113,18 +113,18 @@ TEST_F(LlvmLibcMBRToWCTest, InvalidMultiByte) {
113
113
static_cast <char >(0x80 ),
114
114
static_cast <char >(0x00 )}; // invalid sequence of bytes
115
115
wchar_t dest[2 ];
116
- mbstate_t * mb;
116
+ mbstate_t mb;
117
117
LIBC_NAMESPACE::memset (&mb, 0 , sizeof (mbstate_t ));
118
118
// Trying to push all 4 should error
119
- size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 4 , mb);
119
+ size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 4 , & mb);
120
120
ASSERT_EQ (static_cast <int >(n), -1 );
121
121
ASSERT_ERRNO_EQ (EILSEQ);
122
122
// Trying to push just the first one should error
123
- n = LIBC_NAMESPACE::mbrtowc (dest, ch, 1 , mb);
123
+ n = LIBC_NAMESPACE::mbrtowc (dest, ch, 1 , & mb);
124
124
ASSERT_EQ (static_cast <int >(n), -1 );
125
125
ASSERT_ERRNO_EQ (EILSEQ);
126
126
// Trying to push the second and third should correspond to null wc
127
- n = LIBC_NAMESPACE::mbrtowc (dest, ch + 1 , 2 , mb);
127
+ n = LIBC_NAMESPACE::mbrtowc (dest, ch + 1 , 2 , & mb);
128
128
ASSERT_EQ (static_cast <int >(n), 0 );
129
129
ASSERT_TRUE (*dest == L' \0 ' );
130
130
ASSERT_ERRNO_SUCCESS ();
@@ -136,10 +136,10 @@ TEST_F(LlvmLibcMBRToWCTest, InvalidLastByte) {
136
136
const char ch[4 ] = {static_cast <char >(0xF1 ), static_cast <char >(0x80 ),
137
137
static_cast <char >(0x80 ), static_cast <char >(0xC0 )};
138
138
wchar_t dest[2 ];
139
- mbstate_t * mb;
139
+ mbstate_t mb;
140
140
LIBC_NAMESPACE::memset (&mb, 0 , sizeof (mbstate_t ));
141
141
// Trying to push all 4 should error
142
- size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 4 , mb);
142
+ size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 4 , & mb);
143
143
ASSERT_EQ (static_cast <int >(n), -1 );
144
144
ASSERT_ERRNO_EQ (EILSEQ);
145
145
}
@@ -148,10 +148,10 @@ TEST_F(LlvmLibcMBRToWCTest, ValidTwoByteWithExtraRead) {
148
148
const char ch[3 ] = {static_cast <char >(0xC2 ), static_cast <char >(0x8E ),
149
149
static_cast <char >(0x80 )};
150
150
wchar_t dest[2 ];
151
- mbstate_t * mb;
151
+ mbstate_t mb;
152
152
LIBC_NAMESPACE::memset (&mb, 0 , sizeof (mbstate_t ));
153
153
// Trying to push all 3 should return valid 2 byte
154
- size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 3 , mb);
154
+ size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 3 , & mb);
155
155
ASSERT_EQ (static_cast <int >(n), 2 );
156
156
ASSERT_EQ (static_cast <int >(*dest), 142 );
157
157
ASSERT_ERRNO_SUCCESS ();
@@ -161,31 +161,31 @@ TEST_F(LlvmLibcMBRToWCTest, TwoValidTwoBytes) {
161
161
const char ch[4 ] = {static_cast <char >(0xC2 ), static_cast <char >(0x8E ),
162
162
static_cast <char >(0xC7 ), static_cast <char >(0x8C )};
163
163
wchar_t dest[2 ];
164
- mbstate_t * mb;
164
+ mbstate_t mb;
165
165
LIBC_NAMESPACE::memset (&mb, 0 , sizeof (mbstate_t ));
166
166
// mbstate should reset after reading first one
167
- size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 2 , mb);
167
+ size_t n = LIBC_NAMESPACE::mbrtowc (dest, ch, 2 , & mb);
168
168
ASSERT_EQ (static_cast <int >(n), 2 );
169
169
ASSERT_EQ (static_cast <int >(*dest), 142 );
170
170
ASSERT_ERRNO_SUCCESS ();
171
- n = LIBC_NAMESPACE::mbrtowc (dest + 1 , ch + 2 , 2 , mb);
171
+ n = LIBC_NAMESPACE::mbrtowc (dest + 1 , ch + 2 , 2 , & mb);
172
172
ASSERT_EQ (static_cast <int >(n), 2 );
173
173
ASSERT_EQ (static_cast <int >(*(dest + 1 )), 460 );
174
174
ASSERT_ERRNO_SUCCESS ();
175
175
}
176
176
177
177
TEST_F (LlvmLibcMBRToWCTest, NullString) {
178
178
wchar_t dest[2 ] = {L' O' , L' K' };
179
- mbstate_t * mb;
179
+ mbstate_t mb;
180
180
LIBC_NAMESPACE::memset (&mb, 0 , sizeof (mbstate_t ));
181
181
// reading on nullptr should return 0
182
- size_t n = LIBC_NAMESPACE::mbrtowc (dest, nullptr , 2 , mb);
182
+ size_t n = LIBC_NAMESPACE::mbrtowc (dest, nullptr , 2 , & mb);
183
183
ASSERT_EQ (static_cast <int >(n), 0 );
184
184
ASSERT_TRUE (dest[0 ] == L' O' );
185
185
ASSERT_ERRNO_SUCCESS ();
186
186
// reading a null terminator should return 0
187
187
const char *ch = " \0 " ;
188
- n = LIBC_NAMESPACE::mbrtowc (dest, ch, 1 , mb);
188
+ n = LIBC_NAMESPACE::mbrtowc (dest, ch, 1 , & mb);
189
189
ASSERT_EQ (static_cast <int >(n), 0 );
190
190
ASSERT_ERRNO_SUCCESS ();
191
191
}
@@ -194,10 +194,10 @@ TEST_F(LlvmLibcMBRToWCTest, NullDest) {
194
194
const char ch[4 ] = {static_cast <char >(0xF0 ), static_cast <char >(0x9F ),
195
195
static_cast <char >(0xA4 ),
196
196
static_cast <char >(0xA1 )}; // 🤡 clown emoji
197
- mbstate_t * mb;
197
+ mbstate_t mb;
198
198
LIBC_NAMESPACE::memset (&mb, 0 , sizeof (mbstate_t ));
199
199
// reading nullptr should return correct size
200
- size_t n = LIBC_NAMESPACE::mbrtowc (nullptr , ch, 10 , mb);
200
+ size_t n = LIBC_NAMESPACE::mbrtowc (nullptr , ch, 10 , & mb);
201
201
ASSERT_EQ (static_cast <int >(n), 4 );
202
202
ASSERT_ERRNO_SUCCESS ();
203
203
}
0 commit comments