Pārlūkot izejas kodu

Fixed an issue where CRLF was not correctly recognized

Marco Bambini 5 gadi atpakaļ
vecāks
revīzija
4c50fff8b5
1 mainītis faili ar 4 papildinājumiem un 4 dzēšanām
  1. 4 4
      src/compiler/gravity_lexer.c

+ 4 - 4
src/compiler/gravity_lexer.c

@@ -39,7 +39,7 @@ typedef enum {
 
 // LEXER macros
 #define NEXT                    lexer->buffer[lexer->offset++]; ++lexer->position; INC_COL
-#define PEEK_CURRENT            lexer->buffer[lexer->offset]
+#define PEEK_CURRENT            ((int)lexer->buffer[lexer->offset])
 #define PEEK_NEXT               ((lexer->offset < lexer->length) ? lexer->buffer[lexer->offset+1] : 0)
 #define PEEK_NEXT2              ((lexer->offset+1 < lexer->length) ? lexer->buffer[lexer->offset+2] : 0)
 #define INC_LINE                ++lexer->lineno; RESET_COL
@@ -83,20 +83,20 @@ static inline bool is_newline (gravity_lexer_t *lexer, int c) {
 
     // CR+LF or CR
     if (c == 0x0D) {
-        if (PEEK_NEXT == 0x0A) {NEXT; return true;}
+        if (PEEK_CURRENT == 0x0A) {NEXT;}
         return true;
     }
 
     // UTF-8 cases https://en.wikipedia.org/wiki/Newline#Unicode
 
     // NEL: Next Line, U+0085 (UTF-8 in hex: C285)
-    if ((c == 0xC2) && (PEEK_NEXT == 0x85)) {
+    if ((c == 0xC2) && (PEEK_CURRENT == 0x85)) {
         NEXT;
         return true;
     }
 
     // LS: Line Separator, U+2028 (UTF-8 in hex: E280A8)
-    if ((c == 0xE2) && (PEEK_NEXT == 0x80) && (PEEK_NEXT2 == 0xA8)) {
+    if ((c == 0xE2) && (PEEK_CURRENT == 0x80) && (PEEK_NEXT == 0xA8)) {
         NEXT; NEXT;
         return true;
     }