* synchronized with trunk

git-svn-id: branches/wasm@46721 -
This commit is contained in:
nickysn 2020-08-27 23:19:47 +00:00
commit c7d3484393
6 changed files with 61 additions and 18 deletions

View File

@ -338,12 +338,19 @@ unit cpupara;
paralen := paradef.size
else
paralen := tcgsize2size[def_cgsize(paradef)];
paracgsize:=def_cgsize(paradef);
{ for things like formaldef }
if (paracgsize=OS_NO) then
if (paradef.typ in [objectdef,arraydef,recorddef,setdef,stringdef]) and
not is_special_array(paradef) and
(hp.varspez in [vs_value,vs_const]) then
paracgsize:=int_cgsize(paralen)
else
begin
paracgsize:=OS_ADDR;
paralen := tcgsize2size[OS_ADDR];
paracgsize:=def_cgsize(paradef);
if (paracgsize=OS_NO) then
begin
paracgsize:=OS_ADDR;
paralen := tcgsize2size[OS_ADDR];
paradef:=voidpointertype;
end;
end;
end;

View File

@ -146,7 +146,6 @@ begin
T:=P.Targets.AddExampleProgram('base64decodingtestcase.pas');
T:=P.Targets.AddExampleProgram('cachetest.pp');
T:=P.Targets.AddExampleProgram('cfgtest.pp');
T:=P.Targets.AddExampleProgram('dbugsrv.pp');
T:=P.Targets.AddExampleProgram('debugtest.pp');
T:=P.Targets.AddExampleProgram('doecho.pp');
T:=P.Targets.AddExampleProgram('dparser.pp');

View File

@ -69,6 +69,7 @@ begin
P.ExamplePath.Add('examples');
T:=P.Targets.AddExampleProgram('ipcclient.pp');
T:=P.Targets.AddExampleProgram('ipcserver.pp');
T:=P.Targets.AddExampleProgram('dbugsrv.pp');
{$ifndef ALLPACKAGES}
Run;

View File

@ -5331,15 +5331,41 @@ begin
Changed;
end;
function TryVarByteArrayToStream(var AValue : Variant; Stream : TMemoryStream) : boolean;
var
p : Pointer;
c : Integer;
begin
Result := False;
if not VarIsArray(AValue) then
exit;
c := VarArrayHighBound(AValue,1) - VarArrayLowBound(AValue,1) + 1;
Result := (c > 0) and VarIsType(AValue[VarArrayLowBound(AValue,1)],varByte);
if not Result then
exit;
p := VarArrayLock(AValue);
try
Stream.SetSize(c);
Move(p^,Stream.Memory^,c);
finally
VarArrayUnlock(AValue);
end;
end;
procedure TFPReportCustomImage.LoadDBData(AData: TFPReportData);
var
v : Variant;
s: string;
lStream: TMemoryStream;
begin
s := AData.FieldValues[FFieldName];
v := AData.FieldValues[FFieldName];
lStream := TMemoryStream.Create;
try
FPReportMIMEEncodeStringToStream(s, lStream);
if not TryVarByteArrayToStream(v,lStream) then
begin
s := v;
FPReportMIMEEncodeStringToStream(s, lStream);
end;
LoadPNGFromStream(lStream)
finally
lStream.Free;
@ -5402,15 +5428,25 @@ function TFPReportCustomImage.PrepareObject(aRTParent: TFPReportElement): TFPRep
Var
Img : TFPReportCustomImage;
B : TFPReportCustomBand;
D : TFPReportData;
begin
Result:=inherited PrepareObject(aRTParent);
if Result=Nil then
exit;
img := TFPReportCustomImage(Result);
B:=artParent as TFPReportCustomBand;
if (img.FieldName <> '') and Assigned(B.GetData) then
img.LoadDBData(B.GetData);
if Assigned(Band) then
B := Band
else
B := artParent as TFPReportCustomBand;
if (img.FieldName <> '') then
begin
D := B.GetData;
if not(Assigned(D)) and Assigned(B.Page.Data) then
D := B.Page.Data;
if Assigned(D) then
img.LoadDBData(D);
end;
end;
constructor TFPReportCustomImage.Create(AOwner: TComponent);

View File

@ -1691,8 +1691,6 @@ ResourceString
SWarnStartCompilingPackage = 'Start compiling package %s for target %s.';
SWarnCompilingPackagecompleteProgress = '[%3.0f%%] Compiled package %s';
SWarnCompilingPackagecomplete = 'Compiled package %s';
SWarnSkipPackageTargetProgress = '[%3.0f%%] Skipped package %s which has been disabled for target %s';
SWarnSkipPackageTarget = 'Skipped package %s which has been disabled for target %s';
SWarnInstallationPackagecomplete = 'Installation package %s for target %s succeeded';
SWarnCanNotGetAccessRights = 'Warning: Failed to copy access-rights from file %s';
SWarnCanNotSetAccessRights = 'Warning: Failed to copy access-rights to file %s';
@ -1708,6 +1706,8 @@ ResourceString
SWarnRemovedNonEmptyDirectory = 'Warning: Removed non empty directory "%s"';
SInfoPackageAlreadyProcessed = 'Package %s is already processed';
SInfoSkipPackageTargetProgress = '[%3.0f%%] Skipped package %s which has been disabled for target %s';
SInfoSkipPackageTarget = 'Skipped package %s which has been disabled for target %s';
SInfoCompilingTarget = 'Compiling target %s';
SInfoExecutingCommand = 'Executing command "%s %s"';
SInfoCreatingOutputDir = 'Creating output dir "%s"';
@ -8195,7 +8195,7 @@ procedure TBuildEngine.Compile(Packages: TPackages);
else
begin
inc(FProgressCount);
log(vlWarning,SWarnSkipPackageTargetProgress,[(FProgressCount)/FProgressMax * 100, APackage.Name, Defaults.Target]);
log(vlInfo,SInfoSkipPackageTargetProgress,[(FProgressCount)/FProgressMax * 100, APackage.Name, Defaults.Target]);
APackage.FTargetState:=tsNoCompile;
end;
end;
@ -8288,7 +8288,7 @@ begin
else
begin
inc(FProgressCount);
log(vlWarning,SWarnSkipPackageTargetProgress,[(FProgressCount)/FProgressMax * 100, P.Name, Defaults.Target]);
log(vlInfo,SInfoSkipPackageTargetProgress,[(FProgressCount)/FProgressMax * 100, P.Name, Defaults.Target]);
end;
end;
end
@ -8388,7 +8388,7 @@ begin
log(vlWarning, SWarnInstallationPackagecomplete, [P.Name, Defaults.Target]);
end
else
log(vlWarning,SWarnSkipPackageTarget,[P.Name, Defaults.Target]);
log(vlInfo,SInfoSkipPackageTarget,[P.Name, Defaults.Target]);
end;
NotifyEventCollection.CallEvents(neaAfterInstall, Self);
end;
@ -8417,7 +8417,7 @@ begin
log(vlWarning, SWarnInstallationPackagecomplete, [P.Name, Defaults.Target]);
end
else
log(vlWarning,SWarnSkipPackageTarget,[P.Name, Defaults.Target]);
log(vlInfo,SInfoSkipPackageTarget,[P.Name, Defaults.Target]);
end;
finally
FinishArchive(P);

View File

@ -249,7 +249,7 @@ begin
Result:=Result+Delimiter;
end;
// Quote empty string:
If (Length(Result)=0) and (Count=1) then
If (Length(Result)=0) and (Count=1) and (QuoteChar<>#0) then
Result:=QuoteChar+QuoteChar;
end;