mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 10:49:34 +02:00
Merge branch 'Ghidra_9.2'
This commit is contained in:
commit
6d95c65d3a
1 changed files with 29 additions and 25 deletions
|
@ -805,14 +805,18 @@ abstract public class DataTypeManagerDB implements DataTypeManager {
|
|||
return resolvedDataType;
|
||||
}
|
||||
finally {
|
||||
if (isResolveCacheOwner) {
|
||||
flushResolveQueue(true);
|
||||
try {
|
||||
if (isResolveCacheOwner) {
|
||||
flushResolveQueue(true); // may throw exception - incomplete resolve
|
||||
}
|
||||
}
|
||||
if (isEquivalenceCacheOwner) {
|
||||
clearEquivalenceCache();
|
||||
finally {
|
||||
if (isEquivalenceCacheOwner) {
|
||||
clearEquivalenceCache();
|
||||
}
|
||||
currentHandler = originalHandler;
|
||||
lock.release();
|
||||
}
|
||||
currentHandler = originalHandler;
|
||||
lock.release();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3815,28 +3819,28 @@ abstract public class DataTypeManagerDB implements DataTypeManager {
|
|||
}
|
||||
|
||||
void flushResolveQueue(boolean deactivateCache) {
|
||||
if (resolveQueue == null) {
|
||||
try {
|
||||
if (resolveQueue != null) {
|
||||
DataTypeConflictHandler handler = getDependencyConflictHandler();
|
||||
while (!resolveQueue.isEmpty()) {
|
||||
ResolvePair resolvePair = resolveQueue.pollFirst();
|
||||
DataTypeDB resolvedDt = resolvePair.resolvedDt;
|
||||
try {
|
||||
resolvedDt.postPointerResolve(resolvePair.definitionDt, handler);
|
||||
}
|
||||
// TODO: catch exceptions if needed
|
||||
finally {
|
||||
resolvedDt.resolving = false;
|
||||
resolvedDt.pointerPostResolveRequired = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
resolveQueue = null;
|
||||
if (deactivateCache) {
|
||||
resolveCache = null;
|
||||
}
|
||||
return;
|
||||
}
|
||||
DataTypeConflictHandler handler = getDependencyConflictHandler();
|
||||
while (!resolveQueue.isEmpty()) {
|
||||
ResolvePair resolvePair = resolveQueue.pollFirst();
|
||||
DataTypeDB resolvedDt = resolvePair.resolvedDt;
|
||||
try {
|
||||
resolvedDt.postPointerResolve(resolvePair.definitionDt, handler);
|
||||
}
|
||||
// TODO: catch exceptions if needed
|
||||
finally {
|
||||
resolvedDt.resolving = false;
|
||||
resolvedDt.pointerPostResolveRequired = false;
|
||||
}
|
||||
}
|
||||
resolveQueue = null;
|
||||
if (deactivateCache) {
|
||||
resolveCache = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue