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

MacFileUtils: FSPathMakeRef passes an int where the C function takes its FSRef output pointer

Abierto Apto para principiantes
#1,746 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
1/5
Tiempo estimado
Menos de una hora
Aptitud para principiantes
79/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java
Área
backend

Línea de trabajo

Empieza en contrib/platform/src/com/sun/jna/platform/mac/MacFileUtils.java, en las declaraciones de FileManager alrededor de las líneas 64–65, y compara FSPathMakeRef con la declaración de CarbonCore citada y con la firma adyacente de FSPathMakeRefWithOptions. Corrige el parámetro de salida FSRef que falta o elimina la declaración obsoleta y, después, confirma que la declaración coincide con la firma de la función C. El issue indica que no se realizó ninguna compilación ni ejecución.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

FileManager.FSPathMakeRef is declared with an int options as its second argument. The C function has no options parameter: its second argument is the FSRef * it writes the result to.

// contrib/platform/src/com/sun/jna/platform/mac/MacFileUtils.java:64-65
int FSPathMakeRef(String source, int options, ByteByReference isDirectory);
int FSPathMakeRefWithOptions(String source, int options, FSRef fsref, ByteByReference isDirectory);
// CarbonCore/Files.h:4116 (macOS SDK 26.1)
extern OSStatus  FSPathMakeRef(const UInt8 *path, FSRef *ref, Boolean *isDirectory)        __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA);

It looks like the parameter list of FSPathMakeRefWithOptions, one line below, with the FSRef dropped.

What it can cause

The callee writes its 80-byte FSRef to whatever address the options integer names: options = 0 hands it a NULL output pointer, and any other value is an arbitrary address. Either way the caller has no FSRef to read the result from. Nothing in JNA calls it, so only code that calls it directly is affected.

Fix

int FSPathMakeRef(String path, FSRef ref, ByteByReference isDirectory);, or drop it, since it has been deprecated since 10.8 and FSPathMakeRefWithOptions is there. Happy to send a PR for whichever you prefer.

How this was found

By a research tool that compares each native declaration against the C declaration of the function it binds. Nothing was built or executed; every file quoted is in this repository at 5.19.1, and unchanged on master.

Lenguaje dominante
Java
Estrellas
8.9k
Forks
1.7k
Merge medio
1 d 13 h
PR fusionados (30 d)
1

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 java-native-access/jna

Todos los issues de java-native-access/jna

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.