mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
Merge remote-tracking branch 'origin/patch'
This commit is contained in:
commit
73b743654a
3 changed files with 39 additions and 29 deletions
|
@ -15,16 +15,6 @@
|
|||
*/
|
||||
package ghidra.app.merge.listing;
|
||||
|
||||
import ghidra.app.merge.tool.ListingMergePanel;
|
||||
import ghidra.app.merge.util.ConflictUtility;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.listing.*;
|
||||
import ghidra.program.model.mem.MemoryAccessException;
|
||||
import ghidra.program.util.ProgramConflictException;
|
||||
import ghidra.util.exception.AssertException;
|
||||
import ghidra.util.exception.CancelledException;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Hashtable;
|
||||
|
@ -33,6 +23,17 @@ import javax.swing.SwingUtilities;
|
|||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
import ghidra.app.merge.tool.ListingMergePanel;
|
||||
import ghidra.app.merge.util.ConflictUtility;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.listing.*;
|
||||
import ghidra.program.model.mem.MemoryAccessException;
|
||||
import ghidra.program.util.ProgramConflictException;
|
||||
import ghidra.util.SystemUtilities;
|
||||
import ghidra.util.exception.AssertException;
|
||||
import ghidra.util.exception.CancelledException;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
||||
/**
|
||||
* Class for merging bookmark changes. This class can merge non-conflicting
|
||||
* bookmark changes that were made to the checked out version. It can determine
|
||||
|
@ -168,8 +169,8 @@ class BookmarkMerger extends AbstractListingMerger {
|
|||
if (latest.length == 1) {
|
||||
String latestCategory = latest[0].getCategory();
|
||||
String latestComment = latest[0].getComment();
|
||||
if (!originalCategory.equals(latestCategory) ||
|
||||
!originalComment.equals(latestComment)) {
|
||||
if (!SystemUtilities.isEqual(originalCategory, latestCategory) ||
|
||||
!SystemUtilities.isEqual(originalComment, latestComment)) {
|
||||
// MY deleted and LATEST changed, so conflict.
|
||||
addConflict(addr, originalType, null);
|
||||
}
|
||||
|
@ -182,8 +183,8 @@ class BookmarkMerger extends AbstractListingMerger {
|
|||
else if (my.length == 1) {
|
||||
String myCategory = my[0].getCategory();
|
||||
String myComment = my[0].getComment();
|
||||
if (!originalCategory.equals(myCategory) ||
|
||||
!originalComment.equals(myComment)) {
|
||||
if (!SystemUtilities.isEqual(originalCategory, myCategory) ||
|
||||
!SystemUtilities.isEqual(originalComment, myComment)) {
|
||||
// Changed in MY
|
||||
if (latest.length == 0) {
|
||||
// MY changed and LATEST deleted, so conflict.
|
||||
|
@ -192,8 +193,10 @@ class BookmarkMerger extends AbstractListingMerger {
|
|||
else if (latest.length == 1) {
|
||||
String latestCategory = latest[0].getCategory();
|
||||
String latestComment = latest[0].getComment();
|
||||
if ((!originalCategory.equals(latestCategory) || !originalComment.equals(latestComment)) &&
|
||||
(!myCategory.equals(latestCategory) || !myComment.equals(latestComment))) {
|
||||
if ((!SystemUtilities.isEqual(originalCategory, latestCategory) ||
|
||||
!SystemUtilities.isEqual(originalComment, latestComment)) &&
|
||||
(!SystemUtilities.isEqual(myCategory, latestCategory) ||
|
||||
!SystemUtilities.isEqual(myComment, latestComment))) {
|
||||
// MY changed and LATEST changed differently
|
||||
addConflict(addr, originalType, null);
|
||||
}
|
||||
|
@ -220,7 +223,7 @@ class BookmarkMerger extends AbstractListingMerger {
|
|||
// Deleted in MY
|
||||
if (latest != null) {
|
||||
String latestComment = latest.getComment();
|
||||
if (!originalComment.equals(latestComment)) {
|
||||
if (!SystemUtilities.isEqual(originalComment, latestComment)) {
|
||||
// MY deleted and LATEST changed, so conflict.
|
||||
addConflict(addr, originalType, originalCategory);
|
||||
}
|
||||
|
@ -232,7 +235,7 @@ class BookmarkMerger extends AbstractListingMerger {
|
|||
}
|
||||
else {
|
||||
String myComment = my.getComment();
|
||||
if (!originalComment.equals(myComment)) {
|
||||
if (!SystemUtilities.isEqual(originalComment, myComment)) {
|
||||
// Changed in MY
|
||||
if (latest == null) {
|
||||
// MY changed and LATEST deleted, so conflict.
|
||||
|
@ -240,8 +243,8 @@ class BookmarkMerger extends AbstractListingMerger {
|
|||
}
|
||||
else {
|
||||
String latestComment = latest.getComment();
|
||||
if (!originalComment.equals(latestComment) &&
|
||||
!myComment.equals(latestComment)) {
|
||||
if (!SystemUtilities.isEqual(originalComment, latestComment) &&
|
||||
!SystemUtilities.isEqual(myComment, latestComment)) {
|
||||
// MY changed and LATEST changed differently
|
||||
addConflict(addr, originalType, originalCategory);
|
||||
}
|
||||
|
@ -291,8 +294,8 @@ class BookmarkMerger extends AbstractListingMerger {
|
|||
else if (latest.length == 1) {
|
||||
String latestCategory = latest[0].getCategory();
|
||||
String latestComment = latest[0].getComment();
|
||||
if (!myCategory.equals(latestCategory) ||
|
||||
!myComment.equals(latestComment)) {
|
||||
if (!SystemUtilities.isEqual(myCategory, latestCategory) ||
|
||||
!SystemUtilities.isEqual(myComment, latestComment)) {
|
||||
// MY & LATEST added different NOTEs, so conflict.
|
||||
addConflict(addr, myType, null);
|
||||
}
|
||||
|
@ -316,7 +319,7 @@ class BookmarkMerger extends AbstractListingMerger {
|
|||
}
|
||||
else {
|
||||
String latestComment = latest.getComment();
|
||||
if (!myComment.equals(latestComment)) {
|
||||
if (!SystemUtilities.isEqual(myComment, latestComment)) {
|
||||
// MY & LATEST added same bookmark w/ different comments, so conflict.
|
||||
addConflict(addr, myType, myCategory);
|
||||
}
|
||||
|
|
|
@ -76,7 +76,8 @@ public class BookmarkDB extends DatabaseObject implements Bookmark {
|
|||
|
||||
@Override
|
||||
public String getCategory() {
|
||||
return record.getString(BookmarkDBAdapter.CATEGORY_COL);
|
||||
String category = record.getString(BookmarkDBAdapter.CATEGORY_COL);
|
||||
return category != null ? category : ""; // NOTE: Old data may have stored null
|
||||
}
|
||||
|
||||
public void setComment(String comment) {
|
||||
|
@ -92,7 +93,8 @@ public class BookmarkDB extends DatabaseObject implements Bookmark {
|
|||
|
||||
@Override
|
||||
public String getComment() {
|
||||
return record.getString(BookmarkDBAdapter.COMMENT_COL);
|
||||
String comment = record.getString(BookmarkDBAdapter.COMMENT_COL);
|
||||
return comment != null ? comment : ""; // NOTE: Old data may have stored null
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -206,6 +206,11 @@ public class BookmarkDBAdapterV3 extends BookmarkDBAdapter {
|
|||
return null;
|
||||
}
|
||||
|
||||
if (category == null)
|
||||
category = "";
|
||||
if (comment == null)
|
||||
comment = "";
|
||||
|
||||
Table table = tables[typeID];
|
||||
long nextId = table.getKey() + 1;
|
||||
long id = ((long) typeID << TYPE_ID_OFFSET) | nextId;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue