Skip to content

Commit 715fb16

Browse files
committed
Fix longest register value
1 parent 9ec67ec commit 715fb16

File tree

4 files changed

+28
-16
lines changed

4 files changed

+28
-16
lines changed

.github/workflows/main.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
- run: |
4545
sudo apt-get update
4646
sudo apt-get install -y gdb
47-
- run: cargo test --target x86_64-unknown-linux-gnu
47+
- run: RUST_LOG=trace cargo test --target x86_64-unknown-linux-gnu
4848

4949
# fmt and clippy on nightly builds
5050
fmt-clippy-nightly:

src/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,7 @@ mod tests {
947947

948948
#[test]
949949
fn test_render_app() {
950+
env_logger::init();
950951
// gcc test.c -g -fno-stack-protector -static
951952
// test.c
952953
// ```c

src/snapshots/heretek__tests__render_app.snap

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ snapshot_kind: text
66
"─────────────────────────────────────────────────────────────────────|heretek-v0.1.0-rc12|──────────────────────────────────────────────────────────────────────"
77
" Press q to exit, i to enter input | F1 main | F2 registers | F3 stack | F4 instructions | F5 output | F6 mapping | F7 hexdump | Heap | Stack | Code "
88
"Registers───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"
9-
" rax ➛ 0x401825 ➛ main "
10-
" rbx ➛ 0x1 "
11-
" rcx ➛ <rcx_0> ➛ 0x04 "
12-
" rdx ➛ <rdx_0> ➛ <rdx_1> ➛ "<rdx_2>" "
13-
" rsi ➛ <rsi_0> ➛ <rsi_1> ➛ "<rsi_2>" "
14-
" rdi ➛ 0x1 "
15-
" rbp ➛ <rbp_0> ➛ <rbp_1> ➛ <rbp_2> ➛ 0x00 "
9+
" rax ➛ 0x401825 ➛ main "
10+
" rbx ➛ 0x1 "
11+
" rcx ➛ <rcx_0> ➛ 0x04 "
12+
" rdx ➛ <rdx_0> ➛ <rdx_1> ➛ "<rdx_2>" "
13+
" rsi ➛ <rsi_0> ➛ <rsi_1> ➛ "<rsi_2>" "
14+
" rdi ➛ 0x1 "
15+
" rbp ➛ <rbp_0> ➛ <rbp_1> ➛ <rbp_2> ➛ 0x00 "
1616
"Stack───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"
1717
" <stack_0> ➛ <stack_6> ➛ <stack_6_0> ➛ <stack_6_1> ➛ <rbp_1> ➛ <rbp_2> ➛ 0x00 "
1818
" <stack_1> ➛ 0x40f022 ➛ malloc "

src/ui/registers.rs

+19-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::sync::atomic::Ordering;
33

44
use super::{add_deref_to_span, apply_val_color, ORANGE, PURPLE, RED};
55

6+
use log::debug;
67
use ratatui::prelude::Stylize;
78
use ratatui::text::{Line, Span, Text};
89
use ratatui::widgets::{Block, Borders, Paragraph};
@@ -29,9 +30,21 @@ pub fn draw_registers(app: &App, f: &mut Frame, register: Rect) {
2930
// TODO: cache this
3031
let reg_changed_lock = app.register_changed.lock().unwrap();
3132
let filepath_lock = app.filepath.lock().unwrap();
32-
for RegisterStorage { name, register: _, deref: _ } in regs.iter() {
33-
if longest_register_name < name.len() {
34-
longest_register_name = name.len();
33+
debug!("HEY");
34+
for RegisterStorage { name, register, deref: _ } in regs.iter() {
35+
if let Some(reg) = register {
36+
if !reg.is_set() {
37+
continue;
38+
}
39+
if let Some(reg_value) = &reg.value {
40+
if let Ok(val) = u64::from_str_radix(&reg_value[2..], 16) {
41+
// let changed = reg_changed_lock.contains(&(i as u8));
42+
if longest_register_name < name.len() {
43+
debug!("long: {name}");
44+
longest_register_name = name.len();
45+
}
46+
}
47+
}
3548
}
3649
}
3750
let width: usize = if app.thirty_two_bit.load(Ordering::Relaxed) { 11 } else { 19 };
@@ -47,11 +60,9 @@ pub fn draw_registers(app: &App, f: &mut Frame, register: Rect) {
4760
if let Some(reg_value) = &reg.value {
4861
if let Ok(val) = u64::from_str_radix(&reg_value[2..], 16) {
4962
let changed = reg_changed_lock.contains(&(i as u8));
50-
let mut reg_name = Span::from(format!(
51-
" {name:width$}",
52-
width = longest_register_name - 2
53-
))
54-
.style(Style::new().fg(PURPLE));
63+
let mut reg_name =
64+
Span::from(format!(" {name:width$}", width = longest_register_name))
65+
.style(Style::new().fg(PURPLE));
5566
let (is_stack, is_heap, is_text) = app.classify_val(val, &filepath);
5667

5768
let mut extra_derefs = Vec::new();

0 commit comments

Comments
 (0)