Browse Source

* Convert shstrtab to dyn array of ansichar

Michaël Van Canneyt 4 months ago
parent
commit
21276413ea
1 changed files with 4 additions and 5 deletions
  1. 4 5
      compiler/ogelf.pas

+ 4 - 5
compiler/ogelf.pas

@@ -128,7 +128,7 @@ interface
          shoffset: aword;
          shoffset: aword;
          shstrndx: longword;
          shstrndx: longword;
          symtabndx: longword;
          symtabndx: longword;
-         shstrtab: PChar;
+         shstrtab: TAnsiCharDynarray;
          strtab: PChar;
          strtab: PChar;
          shstrtablen: longword;
          shstrtablen: longword;
          strtablen: longword;
          strtablen: longword;
@@ -1168,8 +1168,7 @@ implementation
           FreeMem(FSecTbl);
           FreeMem(FSecTbl);
         if Assigned(strtab) then
         if Assigned(strtab) then
           FreeMem(strtab);
           FreeMem(strtab);
-        if Assigned(shstrtab) then
-          FreeMem(shstrtab);
+        shstrtab:=nil;
         if Assigned(symversions) then
         if Assigned(symversions) then
           FreeMem(symversions);
           FreeMem(symversions);
         inherited Destroy;
         inherited Destroy;
@@ -1593,9 +1592,9 @@ implementation
         if shdrs[shstrndx].sh_type<>SHT_STRTAB then
         if shdrs[shstrndx].sh_type<>SHT_STRTAB then
           InternalError(2012060202);
           InternalError(2012060202);
         shstrtablen:=shdrs[shstrndx].sh_size;
         shstrtablen:=shdrs[shstrndx].sh_size;
-        GetMem(shstrtab,shstrtablen);
+        SetLength(shstrtab,shstrtablen);
         FReader.seek(shdrs[shstrndx].sh_offset);
         FReader.seek(shdrs[shstrndx].sh_offset);
-        FReader.read(shstrtab^,shstrtablen);
+        FReader.read(shstrtab[0],shstrtablen);
         FLoaded[shstrndx]:=True;
         FLoaded[shstrndx]:=True;
 
 
         { Locate the symtable, it is typically at the end so loop backwards.
         { Locate the symtable, it is typically at the end so loop backwards.