Skip to content

Commit dd7d5e2

Browse files
committedOct 12, 2023
Fix missing synchronization in AnsiConsole
1 parent a9dc2a3 commit dd7d5e2

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed
 

‎src/main/java/org/fusesource/jansi/AnsiConsole.java

+11-7
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,9 @@ public static int getTerminalWidth() {
228228
}
229229
}
230230

231-
private static boolean initialized;
232-
private static int installed;
233-
private static int virtualProcessing;
231+
private static boolean initialized; // synchronized on AnsiConsole.class
232+
private static int installed; // synchronized on AnsiConsole.class
233+
private static int virtualProcessing; // synchronized on AnsiConsole.class
234234

235235
private AnsiConsole() {}
236236

@@ -295,12 +295,16 @@ public int getTerminalWidth() {
295295
processor = null;
296296
type = AnsiType.VirtualTerminal;
297297
installer = () -> {
298-
virtualProcessing++;
299-
SetConsoleMode(console, mode[0] | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
298+
synchronized (AnsiConsole.class) {
299+
virtualProcessing++;
300+
SetConsoleMode(console, mode[0] | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
301+
}
300302
};
301303
uninstaller = () -> {
302-
if (--virtualProcessing == 0) {
303-
SetConsoleMode(console, mode[0]);
304+
synchronized (AnsiConsole.class) {
305+
if (--virtualProcessing == 0) {
306+
SetConsoleMode(console, mode[0]);
307+
}
304308
}
305309
};
306310
width = kernel32Width;

0 commit comments

Comments
 (0)
Please sign in to comment.