DEADSOFTWARE

skip idiotic BOM in text parser
authorKetmar Dark <ketmar@ketmar.no-ip.org>
Sun, 10 Feb 2019 13:39:22 +0000 (15:39 +0200)
committerKetmar Dark <ketmar@ketmar.no-ip.org>
Sun, 10 Feb 2019 13:39:58 +0000 (15:39 +0200)
src/shared/xparser.pas

index de2dfb38a379ac52872a91caaffd71ac61a11db2..595d300f99f32291ae9af1da261b3a8907f95106 100644 (file)
@@ -306,6 +306,14 @@ begin
   mTokInt := 0;
   mOptions := aopts;
   skipToken();
   mTokInt := 0;
   mOptions := aopts;
   skipToken();
+  // fuck you, BOM!
+  {
+  if (mBufLen >= 3) and (mBuffer[0] = #$EF) and (mBuffer[1] = #$BB) and (mBuffer[2] = #$BF) then
+  begin
+    for f := 3 to mBufLen-1 do mBuffer[f-3] := mBuffer[f];
+    Dec(mBufLen, 3);
+  end;
+  }
 end;
 
 
 end;
 
 
@@ -426,6 +434,17 @@ function TTextParser.skipBlanks (): Boolean;
 var
   level: Integer;
 begin
 var
   level: Integer;
 begin
+  //writeln('line=', mLine, '; col=', mCol, '; char0=', Integer(peekChar(0)));
+  if (mLine = 1) and (mCol = 1) and
+     (peekChar(0) = #$EF) and
+     (peekChar(1) = #$BB) and
+     (peekChar(2) = #$BF) then
+  begin
+    skipChar();
+    skipChar();
+    skipChar();
+  end;
+
   while (curChar <> #0) do
   begin
     if (curChar = '/') then
   while (curChar <> #0) do
   begin
     if (curChar = '/') then