diff options
| -rw-r--r-- | idatui/app.py | 2 | ||||
| -rw-r--r-- | idatui/domain.py | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/idatui/app.py b/idatui/app.py index 7bca4e0..38d2411 100644 --- a/idatui/app.py +++ b/idatui/app.py @@ -1581,6 +1581,8 @@ def _fuzzy(name: str, q: str): matched character indices (for highlighting).""" if not q: return (0.0, ()) + if not name: # defensive: never assume a symbol has a name + return None nl = name.lower() pos: list[int] = [] i = 0 diff --git a/idatui/domain.py b/idatui/domain.py index 31cb82d..0d5d0aa 100644 --- a/idatui/domain.py +++ b/idatui/domain.py @@ -58,7 +58,14 @@ class Func: @classmethod def from_raw(cls, d: dict) -> "Func": - return cls(addr=_as_int(d["addr"]), name=d["name"], size=_as_int(d["size"])) + addr = _as_int(d["addr"]) + name = d.get("name") + # An unnamed function (server returns null/empty) must still have a + # usable string name — synthesize IDA's sub_ADDR so every consumer + # (palette, sort, rename prefill) can treat name as a str. + if not name: + name = f"sub_{addr:X}" + return cls(addr=addr, name=name, size=_as_int(d.get("size", 0))) @dataclass(frozen=True) |
