diff --git a/fpPS4.lpr b/fpPS4.lpr index a0e6ecff..c6806102 100644 --- a/fpPS4.lpr +++ b/fpPS4.lpr @@ -409,14 +409,22 @@ begin node:=Telf_file(data); lib:=ps4_app.GetLib(Info^.lib^.strName); - if (lib=nil) then Exit; + if (lib=nil) then Exit(nil); //Don't reload! - if (lib^.parent<>node) then Exit; + if (lib^.parent<>node) then Exit(nil); //Don't reload! Result:=lib^.get_proc(Info^.Nid); - //cache - Info^.lib^.set_proc(Info^.nid,Result); + if (Result=nil) then + begin + Writeln(StdErr,'Warn^:',Info^.lib^.strName,':',ps4libdoc.GetFunctName(Info^.Nid),':',HexStr(Info^.Nid,16)); + Exit(nil); //Don't reload! + end; + + if (Result<>nil) then //cache + begin + Info^.lib^.set_proc(Info^.nid,Result); + end; end; var diff --git a/ps4_elf.pas b/ps4_elf.pas index 9b0f5a48..e93a3b10 100644 --- a/ps4_elf.pas +++ b/ps4_elf.pas @@ -1977,15 +1977,13 @@ var IInfo.sType :=Info^.sType; val:=TResolveImportCb(PPointer(data)[0])(elf,@IInfo,PPointer(data)[1]); + //Important! Don't store the value if the return is nil! if (val<>nil) then begin nSymVal:=Pointer(ptruint(val)+ptruint(nSymVal)); - end else - begin - nSymVal:=nil; + _do_set(nSymVal); end; - _do_set(nSymVal); end; end;