Projects STRLCPY jadx Commits b28eaa1a
🤬
  • fix(gui): add synchronization to SimpleIndex class (#435)

  • Loading...
  • Skylot committed 5 years ago
    b28eaa1a
    1 parent be509c71
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■
    jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java
    skipped 175 lines
    176 176   .subscribeOn(Schedulers.single())
    177 177   .doOnNext(r -> LOG.debug("search event: {}", r))
    178 178   .switchMap(text -> prepareSearch(text)
     179 + .doOnError(e -> LOG.error("Error prepare search: {}", e.getMessage(), e))
    179 180   .subscribeOn(Schedulers.single())
    180 181   .toList()
    181 182   .toFlowable(), 1)
    skipped 109 lines
  • ■ ■ ■ ■ ■ ■
    jadx-gui/src/main/java/jadx/gui/utils/search/SimpleIndex.java
    skipped 11 lines
    12 12   private final List<String> keys = new ArrayList<>();
    13 13   private final List<T> values = new ArrayList<>();
    14 14   
     15 + private final Object syncData = new Object();
     16 + 
    15 17   @Override
    16 18   public void put(String str, T value) {
    17  - keys.add(str);
    18  - values.add(value);
     19 + synchronized (syncData) {
     20 + keys.add(str);
     21 + values.add(value);
     22 + }
    19 23   }
    20 24   
    21 25   @Override
    skipped 17 lines
    39 43   @Override
    40 44   public Flowable<T> search(final String searchStr, final boolean caseInsensitive) {
    41 45   return Flowable.create(emitter -> {
    42  - int size = size();
    43  - for (int i = 0; i < size; i++) {
    44  - if (isMatched(keys.get(i), searchStr, caseInsensitive)) {
    45  - emitter.onNext(values.get(i));
    46  - }
    47  - if (emitter.isCancelled()) {
    48  - return;
     46 + synchronized (syncData) {
     47 + int size = keys.size();
     48 + for (int i = 0; i < size; i++) {
     49 + if (isMatched(keys.get(i), searchStr, caseInsensitive)) {
     50 + emitter.onNext(values.get(i));
     51 + }
     52 + if (emitter.isCancelled()) {
     53 + return;
     54 + }
    49 55   }
    50 56   }
    51 57   emitter.onComplete();
    skipped 2 lines
    54 60   
    55 61   @Override
    56 62   public int size() {
    57  - return keys.size();
     63 + synchronized (syncData) {
     64 + return keys.size();
     65 + }
    58 66   }
    59 67  }
    60 68   
Please wait...
Page is in error, reload to recover