fix(android): preserve emoji in presence reason logs (#108103)

This commit is contained in:
Leon-SK668
2026-07-16 15:03:24 +08:00
committed by GitHub
parent 9f0ceb9e5e
commit 66b09405d0
2 changed files with 17 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
package ai.openclaw.app.node
import ai.openclaw.app.takeUtf16Safe
import android.os.Build
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonPrimitive
@@ -109,6 +110,6 @@ internal object NodePresenceAliveBeacon {
return value
.map { ch -> if (ch.isISOControl()) ' ' else ch }
.joinToString("")
.take(200)
.takeUtf16Safe(200)
}
}

View File

@@ -98,4 +98,19 @@ class NodePresenceAliveBeaconTest {
assertFalse(sanitized.contains("\t"))
assertEquals(200, sanitized.length)
}
@Test
fun sanitizeReasonForLog_preservesUtf16BoundariesAtLimit() {
val splitPairPrefix = "bad\n${"x".repeat(195)}"
assertEquals(
"bad ${"x".repeat(195)}",
NodePresenceAliveBeacon.sanitizeReasonForLog("$splitPairPrefix😀tail"),
)
val completePairPrefix = "bad\n${"x".repeat(194)}"
assertEquals(
"bad ${"x".repeat(194)}😀",
NodePresenceAliveBeacon.sanitizeReasonForLog("$completePairPrefix😀tail"),
)
}
}