aboutsummaryrefslogtreecommitdiffstats
path: root/plan
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-08-07 13:50:42 +0200
committerblasty <blasty@local>2026-08-07 13:50:42 +0200
commitdf4a42e25881531469a0a8399f457ecf58cab099 (patch)
treeef1198af53d5dc57710975da00ac686b235c9631 /plan
parentcodemode: carry over the listing + operand-format tools, and stop reshipping ... (diff)
downloadida-tui-df4a42e25881531469a0a8399f457ecf58cab099.tar.gz
ida-tui-df4a42e25881531469a0a8399f457ecf58cab099.tar.xz
ida-tui-df4a42e25881531469a0a8399f457ecf58cab099.zip
codemode: rename takes a LIST of edits per category, not just one
Found by tests/test_rawimage_rpc.py, which the earlier runs had not covered: every rename_many check failed with {"ok": 0, "failed": 2, "errors": [{"addr": null, "error": "list indices must be integers or slices, not str"}]} The port's rename read each category as a single edit (edit["addr"]), but the batch shape is {func: [{addr,name}, ...], data: [...], local/stack: [...]} -- a list per category, with a single dict accepted as shorthand. Indexing the list with "addr" raised, and because the whole category was one try block the error came back attached to addr=null, naming nothing. That is the entire point of the rename_many RPC verb: a firmware image arrives with hundreds of names from a loader map or an emulator's symbols.json, and applying them one at a time costs a navigation plus two prompt round trips each. Only the single-rename UI path worked. Now mirrors the real tool: one row per EDIT (addr/old/name plus a per-row error), a summary counting edits rather than categories, conflict detection before the write, and dry_run/allow_overwrite/stop_on_error. Renaming a function refreshes Hex-Rays' ctext, whose cache is per function and persisted in the .i64 -- without it the pseudocode keeps calling the old name forever while every other readback reports the new one. Clearing a label with an empty new name is kept as a real request (the scenarios revert with it) rather than being rejected as a missing argument. tests/test_rawimage_rpc.py: 14 passed/7 failed -> 21 passed, 0 failed.
Diffstat (limited to 'plan')
0 files changed, 0 insertions, 0 deletions