Nullable GIF input causes NullPointerException in GifStreamObject.load
Los mantenedores suelen responder en 3 días
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 62/100
Línea de trabajo
Empieza en encoder/src/main/java/com/pedro/encoder/input/gl/render/filters/object/GifFilterRender.kt alrededor de setGif y luego lee GifStreamObject.java, donde load llama a inputStreamGif.available() sin comprobar null. Reproduce el problema con la prueba de una sola línea del issue en las pruebas unitarias locales del módulo encoder. Está terminado cuando un stream nulo se rechaza con IOException, como sugiere el issue, y la prueba de regresión pasa. La elección de API entre IOException y una firma no nula podría requerir una decisión de los mantenedores.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
GifFilterRender.setGif(inputStream: InputStream?) accepts a nullable stream, but forwards it to GifStreamObject.load, which calls inputStreamGif.available() without checking for null. Consequently, setGif(null) throws NullPointerException.
This is an inconsistency between the public Kotlin parameter type and the Java loading implementation. The reproducer intentionally supplies null; it does not demonstrate a failure when loading a valid GIF.
To reproduce
Run this local unit test in the encoder module against commit 82a9cb4ee4babdc792d2ccee8b893f2b36207d40:
import com.pedro.encoder.input.gl.render.filters.`object`.GifFilterRender
import org.junit.Test
class GifNullInputTest {
@Test
fun reproduce() {
GifFilterRender().setGif(null)
}
}
The call fails with NullPointerException inside GifStreamObject.load at inputStreamGif.available().
Expected behavior
Handle null consistently with the public API contract. One option is to reject null with IOException, which is already used for GIF loading failures, while preserving the nullable Kotlin signature. Alternatively, the API could explicitly require a non-null stream.
Environment
- Source version:
2.8.1, commit82a9cb4ee4babdc792d2ccee8b893f2b36207d40. - Class:
GifFilterRender/GifStreamObject, moduleencoder. - Reproduced in the project's Android local unit test task using JDK 17, Gradle 9.7.1 and compile SDK 35.
- Device / Android OS / media server: not involved in this local unit test reproduction.
Additional context
Relevant source: nullable Kotlin entry point, Java dereference.
I have a small fix and a regression test ready. The test expects IOException: it fails with NPE before the fix and passes after it. With only this fix and its test applied, all 26 encoder and 98 common local unit tests pass.
- Lenguaje dominante
- Kotlin
- Estrellas
- 3k
- Forks
- 946
- Merge medio
- 5 d 1 h
- PR fusionados (30 d)
- 6
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pedroSG94/RootEncoder
-
Scheme-less stream URLs throw NullPointerException instead of URISyntaxExceptionPosiblemente ocupada @blihio la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
pedroSG94/RootEncoder#2218 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
pedroSG94/RootEncoder#2213 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
pedroSG94/RootEncoder#2207 · 1 reacción ·
Los mantenedores suelen responder en 3 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
pedroSG94/RootEncoder#2203 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
pedroSG94/RootEncoder#2192 · 2 comentarios ·
Los mantenedores suelen responder en 3 días
Todos los issues de pedroSG94/RootEncoder
Issues similares
-
bug follow-up
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
binding:web core docs p3
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
RunanywhereAI/runanywhere-sdks#1123 ·
Los mantenedores suelen responder en 1 día
-
StepExamBenchmarkTest runs a loop and prints a timing but asserts nothingPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertojules
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
open-learning-exchange/myplanet#18199 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
getCredentials fails on an unrecognized fingerprint while the biometric prompt is still openAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
auth0/Auth0.Android#1095 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area:style bug engine:native
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
maplibre/maplibre-compose#1829 ·
Los mantenedores suelen responder en 1 día