On 12/12/2016 12:15 AM, TheGag96 wrote:
I was porting my Evolutionary Computing homework written in Python over
to D, and I've come across this bug I cannot for the life of me figure out.

https://gitlab.com/TheGag96/evo-pacman/blob/master/source/pacman/tree.d#L139

Not public, please pastebin.

I don't think I could cut this down to a smaller reproducible scenario
due to how bizarre and specific this problem is, so I apologize in
advance if this is hard to follow.

Basically, imagine that I have a binary tree class where, due to how my
program is set up, each node will have either children on both the left
and right side or no children at all (the latter represented by a value
of null for Tree's left and right member). I have a member function
called "dup" -- marked const, mind you -- that just returns a deep copy
of the tree and SHOULDN'T make any changes to the calling object.

I call this function a couple different places and it appears to
function okay, but at the spot I linked, if I call .dup here, it will
corrupt one of the tree's nodes and put something in its left member for
no apparent reason. This oddly doesn't happen on every Tree calling this
function. This could definitely be some stupid mistake on my part, but
the fact that calling a const-marked function changes the state of the
calling object makes me think something else is afoot here...

I would greatly appreciate anyone who would be willing to take a look at
this. This bug is driving me absolutely nuts.

Reply via email to