Don't use C99 structure initialization, it generate false warnings

Even though the initialization of a structure to 0 is defined in C99,
some compilers emit warnings as they think some fields are not
initialized.
Replace the code by an equivalent memset.
Add additional checks for fields, and make sure the analyzer is not confused.
Hash table: free bucker in case of insertion error

This fixes a warning raised by cppcheck.