Skip to content

Commit bebae58

Browse files
committed
Uses safe string manipulation
Should error out when access is out of bound
1 parent 12ab5db commit bebae58

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

sass2scss.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -113,34 +113,34 @@ namespace Sass
113113
if (col_pos != string::npos)
114114
{
115115

116-
if (sass[col_pos] == '\"')
116+
if (sass.at(col_pos) == '\"')
117117
{
118118
// invert quote bool
119119
quoted = !quoted;
120120
}
121-
else if (sass[col_pos] == '/')
121+
else if (sass.at(col_pos) == '/')
122122
{
123-
if (col_pos > 0 && sass[col_pos - 1] == '*')
123+
if (col_pos > 0 && sass.at(col_pos - 1) == '*')
124124
{
125125
comment = false;
126126
}
127127
// next needs to be a slash too
128-
else if (col_pos > 0 && sass[col_pos - 1] == '/')
128+
else if (col_pos > 0 && sass.at(col_pos - 1) == '/')
129129
{
130130
// only found if not in quote or comment
131131
if (!quoted && !comment) return col_pos - 1;
132132
}
133133
}
134-
else if (sass[col_pos] == '\\')
134+
else if (sass.at(col_pos) == '\\')
135135
{
136136
// skip next char if in quote
137137
if (quoted) col_pos ++;
138138
}
139139
// this might be a comment opener
140-
else if (sass[col_pos] == '*')
140+
else if (sass.at(col_pos) == '*')
141141
{
142142
// opening a multiline comment
143-
if (col_pos > 0 && sass[col_pos - 1] == '/')
143+
if (col_pos > 0 && sass.at(col_pos - 1) == '/')
144144
{
145145
// we are now in a comment
146146
if (!quoted) comment = true;
@@ -184,30 +184,30 @@ namespace Sass
184184
{
185185

186186
// found quoted string delimiter
187-
if (sass[col_pos] == '\"')
187+
if (sass.at(col_pos) == '\"')
188188
{
189189
cout << "found delim\n";
190190
if (!comment) quoted = !quoted;
191191
}
192192
// found possible comment closer
193-
else if (sass[col_pos] == '/')
193+
else if (sass.at(col_pos) == '/')
194194
{
195195
// look back to see if it is actually a closer
196-
if (comment && col_pos > 0 && sass[col_pos - 1] == '*')
196+
if (comment && col_pos > 0 && sass.at(col_pos - 1) == '*')
197197
{
198198
close_pos = col_pos + 1; comment = false;
199199
}
200200
}
201-
else if (sass[col_pos] == '\\')
201+
else if (sass.at(col_pos) == '\\')
202202
{
203203
// skip escaped char
204204
if (quoted) col_pos ++;
205205
}
206206
// this might be a comment opener
207-
else if (sass[col_pos] == '*')
207+
else if (sass.at(col_pos) == '*')
208208
{
209209
// look back to see if it is actually an opener
210-
if (!quoted && col_pos > 0 && sass[col_pos - 1] == '/')
210+
if (!quoted && col_pos > 0 && sass.at(col_pos - 1) == '/')
211211
{
212212
cout << "found opener\n";
213213
comment = true; open_pos = col_pos - 1;
@@ -276,7 +276,7 @@ namespace Sass
276276
if (CONVERT_COMMENT(converter) && !IS_COMMENT(converter))
277277
{
278278
// convert to multiline comment
279-
sass[comment_pos + 1] = '*';
279+
sass.at(comment_pos + 1) = '*';
280280
// add comment node to the whitespace
281281
sass += " */";
282282
}
@@ -526,10 +526,10 @@ namespace Sass
526526
{
527527
// scss does not allow multiline src comments
528528
// therefore add forward slashes to all lines
529-
sass[INDENT(converter).length()+0] = '/';
529+
sass.at(INDENT(converter).length()+0) = '/';
530530
// there is an edge case here if indentation
531531
// is minimal (will overwrite the fist char)
532-
sass[INDENT(converter).length()+1] = '/';
532+
sass.at(INDENT(converter).length()+1) = '/';
533533
// could code around that, but I dont' think
534534
// this will ever be the cause for any trouble
535535
}
@@ -550,7 +550,7 @@ namespace Sass
550550
if (CONVERT_COMMENT(converter))
551551
{
552552
if (IS_PARSING(converter))
553-
{ sass[pos_left + 1] = '*'; }
553+
{ sass.at(pos_left + 1) = '*'; }
554554
}
555555
// set comment flag
556556
converter.comment = open;

0 commit comments

Comments
 (0)