Skip to content

Commit 8861bc1

Browse files
mgreterMarcel Greter
authored andcommitted
Fix error reporting regression
1 parent 702ac5a commit 8861bc1

File tree

2 files changed

+29
-15
lines changed

2 files changed

+29
-15
lines changed

src/parser.cpp

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -994,7 +994,7 @@ namespace Sass {
994994
prop->is_delayed(true);
995995
}
996996
else {
997-
error("invalid property name", pstate);
997+
css_error("Invalid CSS", " after ", ": expected \"}\", was ");
998998
}
999999
bool is_indented = true;
10001000
const std::string property(lexed);
@@ -2415,34 +2415,48 @@ namespace Sass {
24152415
{
24162416
int max_len = 14;
24172417
const char* pos = peek < optional_spaces >();
2418+
2419+
const char* last_pos(pos - 1);
24182420
// backup position to last significant char
2419-
while (!*pos || Prelexer::is_space(*pos)) -- pos;
2421+
while ((!*last_pos || Prelexer::is_space(*last_pos)) && last_pos > source) -- last_pos;
2422+
24202423
bool ellipsis_left = false;
2421-
const char* pos_left(pos + 1);
2422-
if (pos_left < source) pos_left = source;
2423-
while (*pos_left && pos_left > source) {
2424-
if (pos - pos_left > max_len) {
2424+
const char* pos_left(last_pos);
2425+
const char* end_left(last_pos);
2426+
std::cerr << "we have " << int(*pos_left) << "\n";
2427+
while (pos_left > source) {
2428+
if (end_left - pos_left > max_len) {
24252429
ellipsis_left = true;
24262430
break;
24272431
}
2432+
std::cerr << "back up\n";
2433+
24282434
const char* prev = pos_left - 1;
24292435
if (*prev == '\r') break;
24302436
if (*prev == '\n') break;
24312437
pos_left = prev;
24322438
}
2439+
if (pos_left < source) {
2440+
std::cerr << "NOW RESET\n";
2441+
pos_left = source;
2442+
}
2443+
24332444
bool ellipsis_right = false;
2434-
const char* pos_right(pos + 1);
2435-
while (*pos_right && pos_right <= end) {
2436-
if (pos_right - pos > max_len) {
2445+
const char* end_right(pos);
2446+
const char* pos_right(pos);
2447+
while (end_right <= end) {
2448+
if (end_right - pos_right > max_len) {
24372449
ellipsis_right = true;
24382450
break;
24392451
}
2440-
if (*pos_right == '\r') break;
2441-
if (*pos_right == '\n') break;
2442-
++ pos_right;
2452+
if (*end_right == '\r') break;
2453+
if (*end_right == '\n') break;
2454+
++ end_right;
24432455
}
2444-
std::string left(pos_left, pos + 1);
2445-
std::string right(pos + 1, pos_right);
2456+
if (end_right > end) end_right = end;
2457+
2458+
std::string left(pos_left, end_left);
2459+
std::string right(pos_right, end_right);
24462460
if (ellipsis_left) left = ellipsis + left;
24472461
if (ellipsis_right) right = right + ellipsis;
24482462
// now pass new message to the more generic error function

src/util.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ namespace Sass {
430430

431431
int cp = utf8::next(it, end);
432432

433-
if (cp == 10) {
433+
if (cp == '\n') {
434434
quoted.push_back('\\');
435435
quoted.push_back('a');
436436
// we hope we can remove this flag once we figure out

0 commit comments

Comments
 (0)