@@ -69,13 +69,13 @@ namespace Sass {
6969
7070      if  (generated_line != previous_generated_line) {
7171        previous_generated_column = 0 ;
72-         while  (generated_line !=  previous_generated_line) {
73-           result += " ; "  ;
74-           previous_generated_line +=  1 ;
72+         if  (generated_line >  previous_generated_line) {
73+           result += std::string (generated_line - previous_generated_line,  ' ; ' ) ;
74+           previous_generated_line = generated_line ;
7575        }
7676      }
77-       else  {
78-         if  (i >  0 )  result += " ,"  ;
77+       else  if  (i >  0 )  {
78+         result += " ,"  ;
7979      }
8080
8181      //  generated column
@@ -97,15 +97,18 @@ namespace Sass {
9797
9898  void  SourceMap::remove_line ()
9999  {
100-     current_position.line  -= 1 ;
101-     current_position.column  = 1 ;
100+     //  prevent removing non existing lines
101+     if  (current_position.line  > 1 ) {
102+       current_position.line  -= 1 ;
103+       current_position.column  = 1 ;
104+     }
102105  }
103106
104107  void  SourceMap::update_column (const  string& str)
105108  {
106109    const  ptrdiff_t  new_line_count = std::count (str.begin (), str.end (), ' \n '  );
107110    current_position.line  += new_line_count;
108-     if  (new_line_count >=  1 ) {
111+     if  (new_line_count >  0 ) {
109112      current_position.column  = str.size () - str.find_last_of (' \n '  );
110113    } else  {
111114      current_position.column  += str.size ();
0 commit comments