diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/BatchEvaluator.kt b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/BatchEvaluator.kt index 73ed79bce82f..a8da62d7ec22 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/BatchEvaluator.kt +++ b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/BatchEvaluator.kt @@ -106,7 +106,9 @@ class BatchEvaluator private constructor() { var count = 0 while (dis.available() > 0) { val error = dis.readBoolean() - val message = dis.readUTF() + val data = ByteArray(dis.readInt()) + dis.readFully(data) + val message = String(data, Charsets.UTF_8) if (count >= requests.size) { LOG.error("Invalid number of results: required " + requests.size + ", reply = " + bytes.contentToString()) return false diff --git a/java/java-runtime/src/com/intellij/rt/debugger/BatchEvaluatorServer.java b/java/java-runtime/src/com/intellij/rt/debugger/BatchEvaluatorServer.java index 295d3f605560..ab6050b6ae9b 100644 --- a/java/java-runtime/src/com/intellij/rt/debugger/BatchEvaluatorServer.java +++ b/java/java-runtime/src/com/intellij/rt/debugger/BatchEvaluatorServer.java @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. /* * @author Eugene Zhuravlev @@ -8,6 +8,7 @@ package com.intellij.rt.debugger; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; @SuppressWarnings("unused") public final class BatchEvaluatorServer { @@ -33,7 +34,11 @@ public final class BatchEvaluatorServer { } dos.writeBoolean(error); - dos.writeUTF(res); + // do not use writeUTF as it supports only 65535 symbols + // dos.writeUTF(res); + byte[] stringBytes = res.getBytes(StandardCharsets.UTF_8); + dos.writeInt(stringBytes.length); + dos.write(stringBytes); } return bas.toString("ISO-8859-1"); }