diff options
author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-04-17 14:45:55 +0000 |
---|---|---|
committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-04-17 14:45:55 +0000 |
commit | c997613f43aa017d34666ea5b0e09a9163b868e0 (patch) | |
tree | cbe26319d9890b77a8cf0142df2f427db5fbbdee | |
parent | ee23007947377e9913bf91ee9ad37198defc51ba (diff) | |
download | fpc-c997613f43aa017d34666ea5b0e09a9163b868e0.tar.gz |
--- Merging r49165 into '.':
U packages/fcl-registry/src/registry.pp
--- Recording mergeinfo for merge of r49165 into '.':
U .
--- Merging r49166 into '.':
U packages/hash/src/sha1.pp
--- Recording mergeinfo for merge of r49166 into '.':
G .
--- Merging r49167 into '.':
U packages/iconvenc/src/iconvert.inc
--- Recording mergeinfo for merge of r49167 into '.':
G .
# revisions: 49165,49166,49167
r49165 | marco | 2021-04-10 15:53:57 +0200 (Sat, 10 Apr 2021) | 3 lines
Changed paths:
M /trunk/packages/fcl-registry/src/registry.pp
* fix from bart for mantis #0038581 that prohibits reusing readbinarydata
as basis for a multisz reader.
r49166 | marco | 2021-04-10 16:26:20 +0200 (Sat, 10 Apr 2021) | 1 line
Changed paths:
M /trunk/packages/hash/src/sha1.pp
* raise exception when file not found.
r49167 | marco | 2021-04-10 16:58:53 +0200 (Sat, 10 Apr 2021) | 2 lines
Changed paths:
M /trunk/packages/iconvenc/src/iconvert.inc
* implemented recommendations from mantis #038510 for better bionic
compatibility.
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/fixes_3_2@49221 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | packages/fcl-registry/src/registry.pp | 2 | ||||
-rw-r--r-- | packages/hash/src/sha1.pp | 11 | ||||
-rw-r--r-- | packages/iconvenc/src/iconvert.inc | 11 |
3 files changed, 17 insertions, 7 deletions
diff --git a/packages/fcl-registry/src/registry.pp b/packages/fcl-registry/src/registry.pp index 7f11182b05..f9d631aad6 100644 --- a/packages/fcl-registry/src/registry.pp +++ b/packages/fcl-registry/src/registry.pp @@ -478,8 +478,6 @@ Var begin Result := GetData(Name, @Buffer, BufSize, RegDataType); - If not (RegDataType in [rdBinary, rdUnknown]) Then - Raise ERegistryException.CreateFmt(SInvalidRegType, [Name]); end; function TRegistry.ReadBinaryData(const Name: String; var Buffer; diff --git a/packages/hash/src/sha1.pp b/packages/hash/src/sha1.pp index 3c8961ea27..3b64f4ccc0 100644 --- a/packages/hash/src/sha1.pp +++ b/packages/hash/src/sha1.pp @@ -51,6 +51,8 @@ function SHA1Match(const Digest1, Digest2: TSHA1Digest): Boolean; implementation +uses sysutils,sysconst; + // inverts the bytes of (Count div 4) cardinals from source to target. procedure Invert(Source, Dest: Pointer; Count: PtrUInt); var @@ -257,6 +259,11 @@ begin SHA1Final(Context, Result); end; +procedure RaiseFileNotFoundException(const fn : String); +begin + raise EFileNotFoundException.Create(SFileNotFound); +end; + function SHA1File(const Filename: String; const Bufsize: PtrUInt): TSHA1Digest; var F: File; @@ -284,7 +291,9 @@ begin until Count < BufSize; FreeMem(Buf, BufSize); Close(F); - end; + end + else + RaiseFileNotFoundException(FileName); SHA1Final(Context, Result); FileMode := ofm; diff --git a/packages/iconvenc/src/iconvert.inc b/packages/iconvenc/src/iconvert.inc index d4428a8cf6..61ced52f6c 100644 --- a/packages/iconvenc/src/iconvert.inc +++ b/packages/iconvenc/src/iconvert.inc @@ -14,7 +14,7 @@ var iconvres: size_t; begin H := iconv_open(PChar(ToEncoding), PChar(FromEncoding)); - if not assigned(H) then + if h=Iconv_t(-1) then begin Res := S; exit(-1); @@ -48,7 +48,8 @@ begin Dst:=PChar(Res)+Offset; OutLen:=Length(Res)-Offset; end; - iconvres:=iconv(H, nil, nil, @Dst, @Outlen); + InLen=0; + iconvres:=iconv(H, nil, @InLen, @Dst, @Outlen); if iconvres = size_t(-1) then begin res:=s; @@ -91,7 +92,8 @@ begin SetLength(Res, Length(Res)+InLen*2+5); // 5 is minimally one utf-8 char Dst:=PChar(Res)+Offset; OutLen:=Length(Res)-Offset; - iconv(H, nil, nil, @Dst, @Outlen); + InLen:=0; + iconv(H, nil, @InLen, @Dst, @Outlen); end; {$endif} // trim output buffer @@ -101,7 +103,8 @@ begin SetLength(Res, Length(Res)+InLen*2+5); // 5 is minimally one utf-8 char Dst:=PChar(Res)+Offset; OutLen:=Length(Res)-Offset; - iconvres:=iconv(H, nil, nil, @Dst, @Outlen); + InLen:=0; + iconvres:=iconv(H, nil, @InLen, @Dst, @Outlen); setlength(Res,Length(Res) - Outlen); iconv_close(H); end; |