Skip to content

Commit 620bfc2

Browse files
committed
[GR-29165] Retrieving user.name value on Windows should never fail.
PullRequest: graal/8194
2 parents 3a0867f + 4ee54a7 commit 620bfc2

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

substratevm/src/com.oracle.svm.core.windows/src/com/oracle/svm/core/windows/WindowsSystemPropertiesSupport.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,20 +69,22 @@ public class WindowsSystemPropertiesSupport extends SystemPropertiesSupport {
6969
@Override
7070
protected String userNameValue() {
7171
WCharPointer userName = LibC._wgetenv(NonmovableArrays.addressOf(NonmovableArrays.fromImageHeap(USERNAME), 0));
72-
UnsignedWord length = LibC.wcslen(userName);
73-
if (userName.isNonNull() && length.aboveThan(0)) {
74-
return toJavaString(userName, length);
72+
if (userName.isNonNull()) {
73+
UnsignedWord length = LibC.wcslen(userName);
74+
if (length.aboveThan(0)) {
75+
return toJavaString(userName, length);
76+
}
7577
}
7678

7779
int maxLength = WinBase.UNLEN + 1;
7880
userName = StackValue.get(maxLength, WCharPointer.class);
7981
CIntPointer lengthPointer = StackValue.get(CIntPointer.class);
8082
lengthPointer.write(maxLength);
81-
if (WinBase.GetUserNameW(userName, lengthPointer) == 0) {
82-
return "unknown"; /* matches openjdk */
83+
if (WinBase.GetUserNameW(userName, lengthPointer) != 0) {
84+
return toJavaString(userName, WordFactory.unsigned(lengthPointer.read() - 1));
8385
}
8486

85-
return toJavaString(userName, WordFactory.unsigned(lengthPointer.read() - 1));
87+
return "unknown"; /* matches openjdk */
8688
}
8789

8890
@Override

0 commit comments

Comments
 (0)