Skip to content

Commit 296e89c

Browse files
authored
Merge pull request shader-slang#243 from csyonghe/master
Adding associated types
2 parents c6fb1de + ff7c46a commit 296e89c

28 files changed

+942
-295
lines changed

source/core/text-io.cpp

+17-13
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,17 @@ namespace Slang
194194
this->encoding = determinedEncoding;
195195
}
196196

197+
bool HasNullBytes(char * str, int len)
198+
{
199+
bool hasSeenNull = false;
200+
for (int i = 0; i < len - 1; i++)
201+
if (str[i] == 0)
202+
hasSeenNull = true;
203+
else if (hasSeenNull)
204+
return true;
205+
return false;
206+
}
207+
197208
Encoding * StreamReader::DetermineEncoding()
198209
{
199210
if (buffer.Count() >= 3 && (unsigned char)(buffer[0]) == 0xEF && (unsigned char)(buffer[1]) == 0xBB && (unsigned char)(buffer[2]) == 0xBF)
@@ -213,26 +224,19 @@ namespace Slang
213224
}
214225
else
215226
{
216-
#ifdef _WIN32
217-
int flag = IS_TEXT_UNICODE_SIGNATURE | IS_TEXT_UNICODE_REVERSE_SIGNATURE | IS_TEXT_UNICODE_STATISTICS | IS_TEXT_UNICODE_ASCII16;
218-
int rs = IsTextUnicode(buffer.Buffer(), (int) buffer.Count(), &flag);
219-
if (rs)
220-
{
221-
if (flag & (IS_TEXT_UNICODE_SIGNATURE | IS_TEXT_UNICODE_STATISTICS))
222-
return Encoding::UTF16;
223-
else if (flag & (IS_TEXT_UNICODE_SIGNATURE | IS_TEXT_UNICODE_STATISTICS))
224-
return Encoding::UTF16Reversed;
225-
else if (flag & IS_TEXT_UNICODE_ASCII16)
226-
return Encoding::UTF8;
227-
}
228-
#endif
227+
// find null bytes
228+
if (HasNullBytes(buffer.Buffer(), (int)buffer.Count()))
229+
{
230+
return Encoding::UTF16;
231+
}
229232
return Encoding::UTF8;
230233
}
231234
}
232235

233236
void StreamReader::ReadBuffer()
234237
{
235238
buffer.SetSize(4096);
239+
memset(buffer.Buffer(), 0, buffer.Count() * sizeof(buffer[0]));
236240
auto len = stream->Read(buffer.Buffer(), buffer.Count());
237241
buffer.SetSize((int)len);
238242
ptr = 0;

0 commit comments

Comments
 (0)