Browse Source

* synchronized with trunk

git-svn-id: branches/wasm@46721 -
nickysn 5 years ago
parent
commit
c7d3484393

+ 12 - 5
compiler/xtensa/cpupara.pas

@@ -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);
-                  { 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
                     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;
                 end;
                 end;
 
 

+ 0 - 1
packages/fcl-base/fpmake.pp

@@ -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');

+ 1 - 0
packages/fcl-process/fpmake.pp

@@ -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;

+ 41 - 5
packages/fcl-report/src/fpreport.pp

@@ -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 (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;
 end;
 
 
 constructor TFPReportCustomImage.Create(AOwner: TComponent);
 constructor TFPReportCustomImage.Create(AOwner: TComponent);

+ 6 - 6
packages/fpmkunit/src/fpmkunit.pp

@@ -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);

+ 1 - 1
rtl/objpas/classes/stringl.inc

@@ -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;