|
|
On 5/11/23 07:49, William F Pokorny wrote:
> At the bottom the issue here seems to be that the first created interior
> gets deleted before the copy in the symbol table code. There was an
> attempt to move to smart pointers on removing the reference counting in
> v3.7, and something went wrong there. I just cannot yet see it - or how
> I might patch it.
I've spent a little more time on this and I don't currently see a clean
way to fix this issue. Well, other than returning to a plain pointer and
reference counting as in v3.7 (and v3.8 to some point during development).
Given how the parser is set up, v3.8 is running smart, shared, interior
pointers through casts to a void pointer and back to a shared pointers.
Pending an actual fix, I strongly recommend v3.8 add a throw in
symboltable.cpp just after the switch "case INTERIOR_ID_TOKEN:".
Something like:
throw POV_EXCEPTION_STRING("Interior ID = ID copies broken in v3.8");
While likely the garbage in memory pointed to after the attempted
interior ID copy will stink enough to crash code somewhere within
POV-Ray(a), a scene with such a copy could 'execute' without a crash -
if one is unlucky.
Bill P.
(a) - It's not the actual copy which crashes, but some later operation
on garbage data.
Post a reply to this message
|
|