xoofx / LibObjectFile

LibObjectFile is a .NET library to read, manipulate and write linker and executable object files (e.g ELF, PE, DWARF, ar...)
BSD 2-Clause "Simplified" License
159 stars 11 forks source link

public bool TryFindByCode(ulong code, out DwarfAbbreviationItem item) failed #28

Open Albert-Coder opened 1 year ago

Albert-Coder commented 1 year ago

in DwarfAbbreviation.cs line 87;

   `public bool TryFindByCode(ulong code, out DwarfAbbreviationItem item)
    {
        item = null;
        if (code == 0)
        {
            return `false;
        }

        code--;

        if (_mapItems.Count > 0)
        {
            return _mapItems.TryGetValue(code, out item);
        }

        if (code < int.MaxValue && (int)code < _items.Count)
        {
            item = _items[(int) code];
            return true;
        }

        item = null;
        return false;
    }`

I found sometimes it failed at return _mapItems.TryGetValue(code, out item); Then I fixed below; I do not konw if you have the same problem;

    `public` bool TryFindByCode(ulong code, out DwarfAbbreviationItem item)
    {
        item = null;
        if (code == 0)
        {
            return false;
        }

        //no need to minus 1
        //code--;

        if (_mapItems.Count > 0)
        {
            return _mapItems.TryGetValue(code, out item);
        }

        //if _mapItems is empty, try _items;
        if (code < int.MaxValue && (int)code <= _items.Count)
        {
            item = _items[(int) code - 1];
            return true;
        }

        item = null;
        return false;
    }