|
@@ -36,12 +36,13 @@ unit ccharset;
|
|
flag : tunicodecharmappingflag;
|
|
flag : tunicodecharmappingflag;
|
|
reserved : byte;
|
|
reserved : byte;
|
|
end;
|
|
end;
|
|
|
|
+ tunicodecharmappingdynarray = array of tunicodecharmapping;
|
|
|
|
|
|
punicodemap = ^tunicodemap;
|
|
punicodemap = ^tunicodemap;
|
|
tunicodemap = record
|
|
tunicodemap = record
|
|
cpname : string[20];
|
|
cpname : string[20];
|
|
cp : word;
|
|
cp : word;
|
|
- map : punicodecharmapping;
|
|
|
|
|
|
+ map : tunicodecharmappingarray;
|
|
lastchar : longint;
|
|
lastchar : longint;
|
|
next : punicodemap;
|
|
next : punicodemap;
|
|
internalmap : boolean;
|
|
internalmap : boolean;
|
|
@@ -84,14 +85,14 @@ unit ccharset;
|
|
lastchar:=-1;
|
|
lastchar:=-1;
|
|
loadunicodemapping:=nil;
|
|
loadunicodemapping:=nil;
|
|
datasize:=256;
|
|
datasize:=256;
|
|
- getmem(data,sizeof(tunicodecharmapping)*datasize);
|
|
|
|
|
|
+ setlength(data,datasize);
|
|
assign(t,f);
|
|
assign(t,f);
|
|
{$I-}
|
|
{$I-}
|
|
reset(t);
|
|
reset(t);
|
|
{$I+}
|
|
{$I+}
|
|
if ioresult<>0 then
|
|
if ioresult<>0 then
|
|
begin
|
|
begin
|
|
- freemem(data,sizeof(tunicodecharmapping)*datasize);
|
|
|
|
|
|
+ data:=nil;
|
|
exit;
|
|
exit;
|
|
end;
|
|
end;
|
|
while not(eof(t)) do
|
|
while not(eof(t)) do
|
|
@@ -110,7 +111,7 @@ unit ccharset;
|
|
val(hs,charpos,code);
|
|
val(hs,charpos,code);
|
|
if code<>0 then
|
|
if code<>0 then
|
|
begin
|
|
begin
|
|
- freemem(data,sizeof(tunicodecharmapping)*datasize);
|
|
|
|
|
|
+ data:=nil;
|
|
close(t);
|
|
close(t);
|
|
exit;
|
|
exit;
|
|
end;
|
|
end;
|
|
@@ -137,7 +138,7 @@ unit ccharset;
|
|
val(hs,unicodevalue,code);
|
|
val(hs,unicodevalue,code);
|
|
if code<>0 then
|
|
if code<>0 then
|
|
begin
|
|
begin
|
|
- freemem(data,sizeof(tunicodecharmapping)*datasize);
|
|
|
|
|
|
+ data:=Nil;
|
|
close(t);
|
|
close(t);
|
|
exit;
|
|
exit;
|
|
end;
|
|
end;
|
|
@@ -148,7 +149,7 @@ unit ccharset;
|
|
{ probably a mbcs with a lot of }
|
|
{ probably a mbcs with a lot of }
|
|
{ entries }
|
|
{ entries }
|
|
datasize:=charpos+1024;
|
|
datasize:=charpos+1024;
|
|
- reallocmem(data,sizeof(tunicodecharmapping)*datasize);
|
|
|
|
|
|
+ setLength(data,datasize);
|
|
end;
|
|
end;
|
|
flag:=umf_noinfo;
|
|
flag:=umf_noinfo;
|
|
end;
|
|
end;
|
|
@@ -277,7 +278,7 @@ unit ccharset;
|
|
end;
|
|
end;
|
|
|
|
|
|
const
|
|
const
|
|
- map : array[0..255] of tunicodecharmapping = (
|
|
|
|
|
|
+ map : tunicodecharmappingarray = (
|
|
(unicode : 0; flag : umf_noinfo; reserved: 0),
|
|
(unicode : 0; flag : umf_noinfo; reserved: 0),
|
|
(unicode : 1; flag : umf_noinfo; reserved: 0),
|
|
(unicode : 1; flag : umf_noinfo; reserved: 0),
|
|
(unicode : 2; flag : umf_noinfo; reserved: 0),
|
|
(unicode : 2; flag : umf_noinfo; reserved: 0),
|
|
@@ -557,7 +558,7 @@ finalization
|
|
hp:=mappings^.next;
|
|
hp:=mappings^.next;
|
|
if not(mappings^.internalmap) then
|
|
if not(mappings^.internalmap) then
|
|
begin
|
|
begin
|
|
- freemem(mappings^.map);
|
|
|
|
|
|
+ mappings^.map:=nil;
|
|
dispose(mappings);
|
|
dispose(mappings);
|
|
end;
|
|
end;
|
|
mappings:=hp;
|
|
mappings:=hp;
|