Fix memory corruption through InitString and second-engine loading
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 4 Apr 2012 10:18:43 +0000 (12:18 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 10 Apr 2012 09:27:57 +0000 (11:27 +0200)
commit2a47e175761e183633e73190665bce4a58e3cd86
tree3b01f6d7ec8c1a60c6773a2cdda70cc2515033ec
parent759b4bb02d161bf42e32ec38b8f8b5df4bc8b126
Fix memory corruption through InitString and second-engine loading

The InitString and ComputerString options were not swapped when replacing
the second engine, so that the ChessProgramStates of the first engine
could point to an invalid (already freed) init string. Also make sure
that appData.directory contains its value in allocated memory, even
when hand-loading engines.
  Some of the rare options were not swapped either, and would thus
always be loaded for the first engine when -singleEngineList was true.
They are now also all reset to their default, before engine load,
to prevent options of one engine to linger on for a next that does
not specify them. The intentional exception is -firstHost.
args.h
backend.c