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 39bf2b9c3b..66c48db7e3 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 @@ -70,7 +70,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene /** * Constructor - * + * * @param vpanel the byte viewer panel that this component lives in * @param layoutModel the layout model for this component * @param model data format model that knows how the data should be displayed @@ -96,6 +96,9 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene } private String getFieldDescription(FieldLocation fieldLoc, Field field) { + if (field == null) { + return null; + } ByteBlockInfo info = indexMap.getBlockInfo(fieldLoc.getIndex(), fieldLoc.getFieldNum()); if (info != null) { String modelName = model.getName(); @@ -365,7 +368,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene /** * Set the color for the component that has focus. - * + * * @param c the color to set */ void setCurrentCursorColor(Color c) { @@ -375,7 +378,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene /** * Set the background color for the line containing the cursor. - * + * * @param c the color to set */ void setCurrentCursorLineColor(Color c) { @@ -384,7 +387,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene /** * Set the color for showing gaps in indexes. - * + * * @param c the color to set */ void setSeparatorColor(Color c) { @@ -434,7 +437,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene /** * Set the new group size - * + * * @param groupSize the group size * @throws UnsupportedOperationException if model for this view does not support groups */ @@ -497,7 +500,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene /** * Set the cursor location; called in response to a location change event - * + * * @param block the block * @param index the index * @param characterOffset the offset into the UI field @@ -657,7 +660,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene /** * Set the edit mode according to the given param if the model for this view supports editing. - * + * * @param editMode true means to enable editing, and change the cursor color. */ void setEditMode(boolean editMode) { @@ -735,7 +738,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene @Override public void mouseReleased(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON3) { - // hack to make sure that a right-clicked component becomes the active + // hack to make sure that a right-clicked component becomes the active // component panel.setCurrentView(ByteViewerComponent.this); } @@ -855,7 +858,7 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene } /** - * Translates a screen/view selection into a byte block model selection + * Translates a screen/view selection into a byte block model selection * @param fieldSelection a {@link FieldPanel} selection * @return a {@link ByteBlockSelection} */ diff --git a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerPanel.java b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerPanel.java index a3f00c1c7d..8fb8bc1907 100644 --- a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerPanel.java +++ b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerPanel.java @@ -187,7 +187,7 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field /** * Removes all secondary highlights for the current function - * + * * @param function the function containing the secondary highlights */ public void removeSecondaryHighlights(Function function) { @@ -298,14 +298,14 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field /** * This function is used to alert the panel that a token was renamed. If the token being renamed * had a secondary highlight, we must re-apply the highlight to the new token. - * + * *
* This is not needed for highlighter service highlights, since they get called again to
* re-apply highlights. It is up to that highlighter to determine if highlighting still applies
* to the new token name. Alternatively, for secondary highlights, we know the user chose the
* highlight based upon name. Thus, when the name changes, we need to take action to update the
* secondary highlight.
- *
+ *
* @param token the token being renamed
* @param newName the new name of the token
*/
@@ -349,7 +349,7 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
/**
* Called by the provider to clone all highlights in the source panel and apply them to this
* panel
- *
+ *
* @param sourcePanel the panel that was cloned
*/
public void cloneHighlights(DecompilerPanel sourcePanel) {
@@ -393,7 +393,7 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
/**
* This function sets the current window display based on our display state
- *
+ *
* @param decompileData the new data
*/
void setDecompileData(DecompileData decompileData) {
@@ -565,7 +565,7 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
/**
* Put cursor on first token in the list
- *
+ *
* @param tokens the tokens to search for
*/
private void goToBeginningOfLine(List
* If the y position is below all the lines, the last line is returned.
- *
+ *
* @param y the y position
* @return the line number, or 0 if not applicable
*/
@@ -1298,10 +1298,14 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
public DecompilerFieldPanel(LayoutModel model) {
super(model, "Decompiler");
- // In the decompiler each field represents a line, so make the field description
+ // In the decompiler each field represents a line, so make the field description
// simply be the line number
- setFieldDescriptionProvider(
- (l, f) -> "line " + (l.getIndex().intValue() + 1) + ", " + f.getText());
+ setFieldDescriptionProvider((l, f) -> {
+ if (f == null) {
+ return null;
+ }
+ return "line " + (l.getIndex().intValue() + 1) + ", " + f.getText();
+ });
}
/**
@@ -1309,7 +1313,7 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
* an event to the rest of the tool. (This is in contrast to a field panel
* goTo
, which we use to simply move the cursor, but not trigger an tool-level
* navigation event.)
- *
+ *
* @param lineNumber the line number
* @param column the column within the line
*/