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

structs of structs don't seem to work

Abierto
#2,036 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp
Área
compilers

Línea de trabajo

Empieza reproduciendo los casos de inicialización mostrados de StructA y StructB con el entorno OSL 1.13.12.0.2 indicado. El informante menciona que usa osltoy, pero quedó bloqueado por issue 2035; confirma si el caso de la variable temporal sigue produciendo ceros e identifica la ruta relevante del compilador o de la generación de código antes de definir la corrección.

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

Descripción

Describe the bug

Adding a struct to a struct seems to result in undefined initialization behavior.

OSL version and dependencies

  • OSL branch/version: 1.13.12.0.2
  • OS: Rocky Linux release 9.4
  • C++ compiler: clang-15.0.7.3
  • LLVM version: llvm-15.0.7.1
  • OIIO version: OpenImageIO-2.4.13.0.4
  • Qt version: Qt-5.15.3.8

To Reproduce

Steps to reproduce the behavior:

Given the following structs:

struct StructA
{
  float cellRand;
  point minDist;
  point closest;
  point secondClosest;
  float edgeDist;
};

struct StructB
{
  StructA result;
  int level;
  float scale;
};

and given a shading function with signature:

StructA somefunction();

If you try and initialize using:

StructB value = StructB(somefunction(), 0, 1.0);

all the attributes are correctly set in the various structs, but if, instead, you do:

StructA temp = somefunction();
StructB value = StructB(temp, 0, 1.0);

then value is incorrect, and the result member is filled with zeroes.

Evidence

It'd be great for someone else to confirm they can reproduce this behavior, thanks!

Lenguaje dominante
C++
Estrellas
2.3k
Forks
414
Merge medio
2 d 14 h
PR fusionados (30 d)
13

Preparar el entorno

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 AcademySoftwareFoundation/OpenShadingLanguage

Todos los issues de AcademySoftwareFoundation/OpenShadingLanguage

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.