Do not trigger UB with string_view.

This commit is contained in:
Philip Rideout
2022-06-08 12:40:42 -07:00
parent 3c29ec5c8e
commit ec86fe4e33
+5 -5
View File
@@ -97,18 +97,18 @@ static string_view readShadingModel(string_view cursor, Shading* shading) {
}
static string_view readSymbol(string_view cursor, char symbol) {
return { cursor.data(), cursor[0] == symbol ? 1ul : 0ul };
return { cursor.data(), (!cursor.empty() && cursor[0] == symbol) ? 1ul : 0ul };
}
static string_view readIdentifier(string_view cursor) {
size_t i = 0;
while (isAlphaNumeric(cursor[i])) i++;
while (i < cursor.size() && isAlphaNumeric(cursor[i])) i++;
return { cursor.data(), i };
}
static string_view readWhitespace(string_view cursor) {
size_t i = 0;
while (isWhitespace(cursor[i])) i++;
while (i < cursor.size() && isWhitespace(cursor[i])) i++;
return { cursor.data(), i };
}
@@ -202,7 +202,7 @@ void WritableArchive::addSpecLine(string_view line) {
advanceCursorByToken();
};
if (cursor[0] == 0 || cursor[0] == '#') {
if (cursor.empty() || cursor[0] == '#') {
++mLineNumber;
return;
}
@@ -217,7 +217,7 @@ void WritableArchive::addSpecLine(string_view line) {
parseFeatureFlag();
}
if (cursor[0] != 0) {
if (!cursor.empty()) {
emitSyntaxError("unexpected trailing character");
}