[0xB] Stable crash

For some totally weird reasons, when you try to craft an antenna without memorizing the recipe (say, by using AAA guide), the game crashes.
Stumbled upon in this save: http://rghost.net/59406313 (most upper-left locker)
Reproduced in free play. Reasons are unknown by me, I am debugging this stuff now:
UPD:
Probably I found this error (crafting.cpp, 1496 line)

if (x_in_y(making->time, (1000 * 8 * (difficulty ^ 4)) /
(get_skill_level(making->skill_used) * get_int())))
You seems to be dividing by NULL (returned by get_skill_level as antenna doesn’t use any skill)

Been fixed in experimental.

Where was the error then? I’ve downloaded latest source code and found that the line is not fixed (or it’s not needed to fix).

Antenna didn’t have a skill assigned, so presumably the skill check was dividing by 0 or something.

Antenna now uses a skill.

Anyway, I wonder what is the difficulty ^ 4 thing supposed to do.
Bitwise XOR with 4 will add 4 when difficulty is 0, 1, 2, 3, 8, 9 and 10, but subtract 4 when difficulty is 4, 5, 6 or 7.
So, 11 first values of difficulty ^ 4 are: 4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15

The comment above it says “worst case is lvl 10 which will take 10^4/10 (1000 minutes)”, which seems to imply the author thought ‘^’ operator means “power” rather than bitwise XOR.

If x_in_y wasn’t done on floats, it would probably crash the game when an unknown recipe with difficulty 4 is used. Thanks to floats, x_in_y(positive, 0) always returns true.

Oh, well.

Antenna didn't have a skill assigned, so presumably the skill check was dividing by 0 or something.
=>
You seems to be dividing by NULL (returned by get_skill_level as antenna doesn't use any skill)
Anyway, I wonder what is the difficulty ^ 4 thing supposed to do.
Didn't except this thing. For me it was POWER operator as well, because that is common meaning of this symbol in programming languages.