From a55990bd3a78df607da14de96406b8932cd4b5ce Mon Sep 17 00:00:00 2001 From: dev747368 <48332326+dev747368@users.noreply.github.com> Date: Tue, 18 Nov 2025 22:47:02 +0000 Subject: [PATCH] GP-6136 fix ByteViewer exception when clicking on partial line ByteViewer formats that use several bytes (eg. hex long, hex long long) cause a class cast exception when a row with partial data is displayed. --- .../plugin/core/byteviewer/ByteViewerComponent.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponent.java b/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponent.java index 8c84254b92..58136f0c14 100644 --- a/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponent.java +++ b/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponent.java @@ -566,18 +566,13 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene return characterOffset; } - int column = fieldLoc.getCol() + characterOffset; int fieldNum = fieldLoc.getFieldNum(); - int fieldRow = fieldLoc.getRow(); - ByteField field = (ByteField) layout.getField(fieldNum); - if (field != null) { - // not sure this can be null - int numCols = field.getNumCols(fieldRow); - if (column >= numCols) { - column = numCols - 1; - } + if (!(layout.getField(fieldNum) instanceof ByteField field)) { + return characterOffset; } + int column = Math.clamp(fieldLoc.getCol() + characterOffset, 0, + field.getNumCols(fieldLoc.getRow()) - 1); return column; }