Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

structs of structs don't seem to work

Aperta
#2,036 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
cpp
Ambito
compilers

Direzione di ricerca

Inizia riproducendo i casi di inizializzazione mostrati di StructA e StructB con l’ambiente OSL 1.13.12.0.2 segnalato. Il reporter menziona di usare osltoy, ma è stato bloccato da issue 2035; verifica se il caso della variabile temporanea continua a produrre zeri e individua il percorso rilevante del compilatore o della generazione del codice prima di definire la correzione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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!

Lingua principale
C++
Stelle
2.3k
Fork
414
Merge medio
2g 14h
PR unite (30g)
13

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di AcademySoftwareFoundation/OpenShadingLanguage

Tutte le issue di AcademySoftwareFoundation/OpenShadingLanguage

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.