aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors_alexander <s_alexander@b956fd51-792f-4845-bead-9b4dfca2ff2c>2009-12-05 12:26:56 +0000
committers_alexander <s_alexander@b956fd51-792f-4845-bead-9b4dfca2ff2c>2009-12-05 12:26:56 +0000
commit4c927bd3abb27cb477db47b42c368d356c7002cb (patch)
treea7553398495ec9bda4f6f977215f322ff8a0e917
parentbb6973670cc1ddc05cef67ed1174f4a65a9f3978 (diff)
downloadusdx-4c927bd3abb27cb477db47b42c368d356c7002cb.tar.gz
usdx-4c927bd3abb27cb477db47b42c368d356c7002cb.tar.xz
usdx-4c927bd3abb27cb477db47b42c368d356c7002cb.zip
disable autodetection, if pcre-lib did not load
if the pcre-lib could not be load, do not try to compile the regex and so do not execute the regex and allways use the fallback encoding git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1966 b956fd51-792f-4845-bead-9b4dfca2ff2c
-rw-r--r--src/encoding/Auto.inc35
1 files changed, 18 insertions, 17 deletions
diff --git a/src/encoding/Auto.inc b/src/encoding/Auto.inc
index bf512f95..3d415095 100644
--- a/src/encoding/Auto.inc
+++ b/src/encoding/Auto.inc
@@ -75,27 +75,28 @@ begin
self.UTF8Encoder := UTF8Encoder;
// Load and initialize PCRE Library
- LoadPCRE();
- SetPCREMallocCallback(PCREGetMem);
- SetPCREFreeCallback(PCREFreeMem);
-
- // compile regex
- self.Regex := pcre_compile('\A([\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*\z', 0, @Error, @ErrorOffset, nil);
-
- if self.Regex = Nil then
- begin
- writeln('ERROR: UTF8 Regex compilation failed: ', AnsiString(Error), ' at ', ErrorOffset);
- end
- else
+ if LoadPCRE() then
begin
- // if compiled successfull, try to get more informations the speed up the matching
- self.RegexExtra := pcre_study(self.Regex, 0, @Error);
+ // compile regex
+ self.Regex := pcre_compile('\A([\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*\z', 0, @Error, @ErrorOffset, nil);
- if Error <> Nil then
+ if self.Regex = Nil then
begin
- writeln('ERROR: UTF8 Regex study failed: ', AnsiString(Error));
+ writeln('ERROR: UTF8 Regex compilation failed: ', AnsiString(Error), ' at ', ErrorOffset);
+ end
+ else
+ begin
+ // if compiled successfull, try to get more informations the speed up the matching
+ self.RegexExtra := pcre_study(self.Regex, 0, @Error);
+
+ if Error <> Nil then
+ begin
+ writeln('ERROR: UTF8 Regex study failed: ', AnsiString(Error));
+ end;
end;
- end;
+ end
+ else
+ writeln('ERROR: pcre not loaded. utf-8 autodetection will not work.');
end;
function TEncoderAuto.GetName(): AnsiString;