t/test-deb716628.sh: don't generate a core file if the test fails
test-gh1: new

this adds a test case based on github Issue #1.

the two data files are compressed MTBL files generated with something
like the following python script:

    import mtbl

    w = mtbl.writer('test-gh1-snappy.data', compression=mtbl.COMPRESSION_SNAPPY)
    w['key1'] = '1' * 30000
    w.close()

    w = mtbl.writer('test-gh1-zlib.data', compression=mtbl.COMPRESSION_ZLIB)
    w['key1'] = '1' * 30000
    w.close()
t/test-gh1.sh: discard stdout from mtbl_dump
reader: get_block(): use snappy_uncompressed_length() to get the real value of block_contents_size

this addresses the MTBL_COMPRESSION_SNAPPY case for Issue #1.
reader: factor out zlib decompression into get_block_zlib_decompress()
reader: get_block_zlib_decompress(): handle Z_BUF_ERROR from inflate()

for highly compressed data, the output buffer we pass to zlib's
inflate() may not be large enough to contain the decompressed data
block. call inflate() in a loop, enlarging the output buffer as
necessary.

this addresses the MTBL_COMPRESSION_ZLIB case for Issue #1.
reader: get_block(): increase initial zlib decompression buffer size

after the previous commit, we now correctly handle the case where the
decompression buffer is (initially) too small to hold the decompressed
output. however, we can still increase the initial size of this buffer
in order to reduce the amount of looping and reallocation that has to be
done in that case. so, increase it from 2X to 4X of the data block size.
mtbl_merge: fix tiny memory leak in init_dso()

"func_name" is a heap allocated object local to the init_dso() function,
so it needs to be freed before the function returns.
sorter: _mtbl_sorter_write_chunk(): free allocated chunk object on error return

the variable 'c' is allocated in the _mtbl_sorter_write_chunk() function
and leaks on an error return. detected by:

mtbl/sorter.c:199:6: warning: Potential leak of memory pointed to by 'c'
                                        mtbl_writer_destroy(&w);
                                        ^~~~~~~~~~~~~~~~~~~
sorter: mtbl_sorter_iter(): free allocated iter object on error return

the variable 'it' is allocated in the mtbl_sorter_iter() function and
leaks on an error return. detected by:

mtbl/sorter.c:320:12: warning: Potential leak of memory pointed to by 'it'
                        return (NULL);
                                ^~~~
my/zonefile: treat a second SOA as EOF

some ZFAs (e.g., .name) strangely terminate the zone file with a second
SOA, which is technically invalid per IETF and ICANN specs. add a
workaround for these broken zone files by treating a second SOA
encountered in zonefile_read() the same as EOF.

it's not necessary to actually close the FILE object in zonefile_read()
on EOF. this is performed in zonefile_destroy().
my/my_alloc: add my_free macro
my/my_alloc: add MY_ALLOC_WARN_DEPRECATED stuff wrapper functions for calloc, malloc, realloc
my/vector: free -> my_free
my/vector: mark all generated functions with the 'unused' attribute

according to the gcc documentation,

    unused

        This attribute, attached to a function, means that the function
        is meant to be possibly unused. GCC does not produce a warning
        for this function.

this makes sure the functions generated by VECTOR_GENERATE() don't
trigger -Wunused-functions diagnostics when compiled.
my/hex_decode: don't allow use-after-free in error path

in the error case, where the input passed to hex_decode() is invalid,
make sure we don't allow a stray pointer to escape via the 'raw'
parameter-return value. this prevents use-after-free() in callers.
my/m4/ld-version-script.m4: new
my/my_fileset: my_fileset_reload(): don't leak on error return
reader: mtbl_reader_init_fd(): don't leak 'fd' on error return
test-vector: test6(): don't leak 'v'