* 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 paralen := paradef.size
else else
paralen := tcgsize2size[def_cgsize(paradef)]; paralen := tcgsize2size[def_cgsize(paradef)];
paracgsize:=def_cgsize(paradef); if (paradef.typ in [objectdef,arraydef,recorddef,setdef,stringdef]) and
{ for things like formaldef } not is_special_array(paradef) and
if (paracgsize=OS_NO) then (hp.varspez in [vs_value,vs_const]) then
paracgsize:=int_cgsize(paralen)
else
begin begin
paracgsize:=OS_ADDR; paracgsize:=def_cgsize(paradef);
paralen := tcgsize2size[OS_ADDR]; if (paracgsize=OS_NO) then
begin
paracgsize:=OS_ADDR;
paralen := tcgsize2size[OS_ADDR];
paradef:=voidpointertype;
end;
end; end;
end; end;

View File

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

View File

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

View File

@ -5331,15 +5331,41 @@ begin
Changed; Changed;
end; 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); procedure TFPReportCustomImage.LoadDBData(AData: TFPReportData);
var var
v : Variant;
s: string; s: string;
lStream: TMemoryStream; lStream: TMemoryStream;
begin begin
s := AData.FieldValues[FFieldName]; v := AData.FieldValues[FFieldName];
lStream := TMemoryStream.Create; lStream := TMemoryStream.Create;
try try
FPReportMIMEEncodeStringToStream(s, lStream); if not TryVarByteArrayToStream(v,lStream) then
begin
s := v;
FPReportMIMEEncodeStringToStream(s, lStream);
end;
LoadPNGFromStream(lStream) LoadPNGFromStream(lStream)
finally finally
lStream.Free; lStream.Free;
@ -5402,15 +5428,25 @@ function TFPReportCustomImage.PrepareObject(aRTParent: TFPReportElement): TFPRep
Var Var
Img : TFPReportCustomImage; Img : TFPReportCustomImage;
B : TFPReportCustomBand; B : TFPReportCustomBand;
D : TFPReportData;
begin begin
Result:=inherited PrepareObject(aRTParent); Result:=inherited PrepareObject(aRTParent);
if Result=Nil then if Result=Nil then
exit; exit;
img := TFPReportCustomImage(Result); img := TFPReportCustomImage(Result);
B:=artParent as TFPReportCustomBand; if Assigned(Band) then
if (img.FieldName <> '') and Assigned(B.GetData) then B := Band
img.LoadDBData(B.GetData); 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; end;
constructor TFPReportCustomImage.Create(AOwner: TComponent); constructor TFPReportCustomImage.Create(AOwner: TComponent);

View File

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

View File

@ -249,7 +249,7 @@ begin
Result:=Result+Delimiter; Result:=Result+Delimiter;
end; end;
// Quote empty string: // 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; Result:=QuoteChar+QuoteChar;
end; end;