From da958707dd82edd586ce1e69f8cbe7bd9c52ff70 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Tue, 22 Sep 2015 21:44:40 +0200 Subject: [PATCH] only handle ANSI and UTF-8 encoede dub project - UCS 2/4 crashes te parser - DUB itself does not support these encodings --- src/ce_dubproject.pas | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/ce_dubproject.pas b/src/ce_dubproject.pas index 944b405b..541595de 100644 --- a/src/ce_dubproject.pas +++ b/src/ce_dubproject.pas @@ -164,14 +164,22 @@ begin loader.Read(bom, 4); if (bom and $BFBBEF) = $BFBBEF then loader.Position:= 3 - else if bom = $FFFE0000 then - loader.Position:= 4 - else if bom = $FEFF then - loader.Position:= 4 - else if (bom and $FEFF) = $FEFF then - loader.Position:= 2 - else if (bom and $FFFE) = $FFFE then - loader.Position:= 2 + else if (bom = $FFFE0000) or (bom = $FEFF) then + begin + // UCS-4 LE/BE not handled by DUB + loader.clear; + loader.WriteByte(byte('{')); + loader.WriteByte(byte('}')); + loader.Position:= 0; + end + else if ((bom and $FEFF) = $FEFF) or ((bom and $FFFE) = $FFFE) then + begin + // UCS-2 LE/BE not handled by DUB + loader.clear; + loader.WriteByte(byte('{')); + loader.WriteByte(byte('}')); + loader.Position:= 0; + end else loader.Position:= 0; //