-
Bug
-
Resolution: Duplicate
-
Major
-
None
-
Platform: Other, OS: Linux
the capturing of console-output external jobs chokes on German-Umlaut.
client-console:
-----------------
:~/tmp/test> java -jar hudson-core-1.292.jar "job" ls -l
insgesamt 5988
rw-rr- 1 axel users 1289806 14. Mär 01:57 ant-1.7.0.jar
rw-rr- 1 axel users 57779 14. Mär 01:57 commons-fileupload-1.2.1.jar
rw-rr- 1 axel users 307550 14. Mär 01:57 commons-httpclient-3.1-rc1.jar
rw-rr- 1 axel users 261809 14. Mär 01:57 commons-lang-2.4.jar
rw-rr- 1 axel users 52915 14. Mär 01:57 commons-logging-1.1.jar
rw-rr- 1 axel users 3951836 14. Mär 02:07 hudson-core-1.292.jar
rw-rr- 1 axel users 170206 14. Mär 01:57 remoting-1.292.jar
Exception in thread "ls -l: stdout copier"
java.lang.StringIndexOutOfBoundsException: String index out of range: -3
at java.lang.String.charAt(String.java:687)
at hudson.util.EncodingStream.write(EncodingStream.java:44)
at java.io.FilterOutputStream.write(FilterOutputStream.java:108)
at hudson.util.DualOutputStream.write(DualOutputStream.java:52)
at hudson.util.StreamCopyThread.run(StreamCopyThread.java:51)
console-output as received in hudson:
-------------------------------------
started
insgesamt 5988
rw-rr- 1 axel users 1289806 14. Mfinished: SUCCESS
- duplicates
-
JENKINS-4877 StringIndexOutOfBoundsException when running external jobs that output non-ASCII characters
-
- Closed
-
after some testing I found the problem.....
java byte is from -128 to 127......
UTF8-encoded texts use (unsinged) bytes with values above 127
the code in "hudson.util.EncodingStream.write" should not use div/modulo but bit
operations:
use
// b is in the range of "-128 to 127"!
out.write(chars.charAt((b >> 4) & 0x0f));
out.write(chars.charAt(b & 0x0f));
instead of
out.write(chars.charAt(b / 16));
out.write(chars.charAt(b % 16));
This will fix this issue.
Can someone please commit this patch.