Changeset 108


Ignore:
Timestamp:
10/11/02 16:29:37 (21 years ago)
Author:
piso
Message:

loadInternal(): added write locking.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/j/ListRegistersBuffer.java

    r2 r108  
    33 *
    44 * Copyright (C) 2002 Peter Graves
    5  * $Id: ListRegistersBuffer.java,v 1.1.1.1 2002-09-24 16:09:02 piso Exp $
     5 * $Id: ListRegistersBuffer.java,v 1.2 2002-10-11 16:29:37 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    9797        if (directory != null)
    9898            names = directory.list();
    99         if (names != null && names.length > 0) {
    100             Arrays.sort(names);
    101             final int MAX_LINES = 100;
    102             for (int i = 0; i < names.length; i++) {
    103                 final String name = names[i];
    104                 FastStringBuffer sb = new FastStringBuffer();
    105                 sb.append("Register ");
    106                 sb.append(name);
    107                 String text = Registers.getText(name, MAX_LINES);
    108                 if (text == null || text.length() == 0)
    109                     continue;
    110                 int lineCount = Utilities.countLines(text);
    111                 appendLine(
    112                     new ListRegistersLine(sb.toString(), name));
    113                 append(text);
    114                 if (lineCount == MAX_LINES)
    115                     appendLine(new ListRegistersLine("[...]", name));
    116             }
    117         } else
    118             appendLine(new ListRegistersLine("No registers in use", null));
    119         renumber();
    120         setLoaded(true);
     99        try {
     100            lockWrite();
     101        }
     102        catch (InterruptedException e) {
     103            Log.debug(e);
     104            return;
     105        }
     106        try {
     107            if (names != null && names.length > 0) {
     108                Arrays.sort(names);
     109                final int MAX_LINES = 100;
     110                for (int i = 0; i < names.length; i++) {
     111                    final String name = names[i];
     112                    FastStringBuffer sb = new FastStringBuffer();
     113                    sb.append("Register ");
     114                    sb.append(name);
     115                    String text = Registers.getText(name, MAX_LINES);
     116                    if (text == null || text.length() == 0)
     117                        continue;
     118                    int lineCount = Utilities.countLines(text);
     119                    appendLine(
     120                        new ListRegistersLine(sb.toString(), name));
     121                    append(text);
     122                    if (lineCount == MAX_LINES)
     123                        appendLine(new ListRegistersLine("[...]", name));
     124                }
     125            } else
     126                appendLine(new ListRegistersLine("No registers in use", null));
     127            renumber();
     128            setLoaded(true);
     129        }
     130        finally {
     131            unlockWrite();
     132        }
    121133    }
    122134
Note: See TracChangeset for help on using the changeset viewer.