Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Nullable GIF input causes NullPointerException in GifStreamObject.load

Abierto Apto para principiantes
#2,216 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 3 días

@blihio ya está trabajando en esto.

Desde el 16/10/2026.

  • #2217 de @blihio — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
62/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
android, java, kotlin
Área
mobile

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, commit 82a9cb4ee4babdc792d2ccee8b893f2b36207d40.
  • Class: GifFilterRender / GifStreamObject, module encoder.
  • 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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de pedroSG94/RootEncoder

Todos los issues de pedroSG94/RootEncoder

Issues similares

Más issues de Kotlin

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.