Primitivo curto negativo tem valor incorreto no Android 24

Meu dispositivo Nexus 5X com Android 7.0 (nível 24 da API) tem um comportamento extremamente estranho ao imprimir e comparar os valores deshort Campos.

public class TestActivity {
    public class ShortWrapper {
        public short s;
    }

    public void onCreate(Bundle b) {
        // Local short
        short s1 = -10;
        Log.d(TAG, "Local short (concatenation) = " + s1);
        Log.d(TAG, String.format("Local short (String.format) = %d", s1));
        if(s1 == -10) Log.d(TAG, "EQUAL"); else Log.d(TAG, "!!! NOT EQUAL !!!");

        // Short field
        TestActivity.ShortWrapper w = new TestActivity.ShortWrapper();
        w.s = -10;
        Log.d(TAG, "Short field (concatenation) = " + w.s);
        Log.d(TAG, String.format("Short field (String.format) = %d", w.s));
        if(w.s == -10) Log.d(TAG, "EQUAL"); else Log.d(TAG, "!!! NOT EQUAL !!!");
    }
}

Resultado:

Local short (concatenation) = -10
Local short (String.format) = -10
EQUAL
Short field (concatenation) = 65526         <<<<<<<<< ???
Short field (String.format) = -10
!!! NOT EQUAL !!!                           <<<<<<<<< ???

Em outro dispositivo Android executando o Android 4.4 e em um emulador do Android 7.0, a saída é diferente, ou seja, conforme o esperado.

Por que o Nexus 5X está lidando de maneira tão estranha com esse campo curto negativo? Isso é um bug da plataforma ou dispositivo?

questionAnswers(0)

yourAnswerToTheQuestion