Browse Source

+ wasm resource writer: implemented AddEmptySections

Nikolay Nikolov 1 year ago
parent
commit
0e0c98f564
1 changed files with 10 additions and 0 deletions
  1. 10 0
      packages/fcl-res/src/wasmwriter.pp

+ 10 - 0
packages/fcl-res/src/wasmwriter.pp

@@ -65,6 +65,7 @@ type
     procedure WriteResStringTable;
     procedure WriteResStringTable;
     procedure WriteRawData;
     procedure WriteRawData;
     procedure WriteResData(aStream : TStream; aNode : TResourceTreeNode);
     procedure WriteResData(aStream : TStream; aNode : TResourceTreeNode);
+    procedure AddEmptySections(aResources : TResources);
     procedure WriteWasmSection(aStream: TStream; wsid: TWasmSectionID);
     procedure WriteWasmSection(aStream: TStream; wsid: TWasmSectionID);
     procedure WriteWasmSectionIfNotEmpty(aStream: TStream; wsid: TWasmSectionID);
     procedure WriteWasmSectionIfNotEmpty(aStream: TStream; wsid: TWasmSectionID);
     procedure WriteWasmCustomSection(aStream: TStream; wcst: TWasmCustomSectionType);
     procedure WriteWasmCustomSection(aStream: TStream; wcst: TWasmCustomSectionType);
@@ -357,6 +358,14 @@ begin
     WriteResData(aStream,aNode.IDEntries[i]);
     WriteResData(aStream,aNode.IDEntries[i]);
 end;
 end;
 
 
+procedure TWasmResourceWriter.AddEmptySections(aResources: TResources);
+begin
+  Align(fDataAlignment,FDataSegments[wrdsResources]);
+  //fSections.Add(HandlesSectName,SHT_NOBITS,SHF_ALLOC or SHF_WRITE,
+  //  aStream.Position,fDataAlignment*aResources.Count,fDataAlignment);
+  FDataSegments[wrdsResHandles].SetSize(fDataAlignment*aResources.Count);
+end;
+
 procedure TWasmResourceWriter.WriteWasmSection(aStream: TStream;
 procedure TWasmResourceWriter.WriteWasmSection(aStream: TStream;
   wsid: TWasmSectionID);
   wsid: TWasmSectionID);
 var
 var
@@ -476,6 +485,7 @@ begin
   WriteNodeInfos;
   WriteNodeInfos;
   WriteResStringTable;
   WriteResStringTable;
   WriteRawData;
   WriteRawData;
+  AddEmptySections(aResources);
 
 
   WriteImportSection;
   WriteImportSection;
   WriteDataSegments;
   WriteDataSegments;