mariadb/mysys
V Narayanan 336c810618 Bug#43572 Handle failures from hash_init
Failure to allocate memory for the hash->array element,
caused hash_init to return without initializing the other
members of the hash. Thus although the dynamic array
buffer may be allocated at a later point in the code, the
incompletely initialized hash caused fatal failures.

This patch moves the initialization of the other members
of the hash above the array allocation, so that the usage
of this hash will not result in fatal failures.

include/hash.h:
  Bug#43572 Handle failures from hash_init
  
  hash_inited is used to verify that the hash is
  valid. After the change induced by the current
  patch hash->array.buffer !=0 is not a valid check
  for this condition, since, the dynamic array can
  be allocated even at a later time. Bootstrap SQL
  script is setting some variables, which are
  actually not set due to this hash_inited issue.
  Thus we get empty grant tables.
  
  A better way to check if the hash is valid is
  to verify that hash->blength is greater than 0.
mysys/hash.c:
  Bug#43572 Handle failures from hash_init
  
  Move the initialization of the other members
  of the hash above the array allocation, so that
  the usage of this hash will not result in fatal
  failures.
2009-06-19 17:29:21 +05:30
..
.cvsignore
array.c
base64.c
ChangeLog
charset-def.c
charset.c
checksum.c
CMakeLists.txt
default.c
default_modify.c
errors.c
hash.c
list.c
make-ccc
make-conf.c
Makefile.am
md5.c
mf_arr_appstr.c
mf_brkhant.c
mf_cache.c
mf_dirname.c
mf_fn_ext.c
mf_format.c
mf_getdate.c
mf_iocache.c
mf_iocache2.c
mf_keycache.c
mf_keycaches.c
mf_loadpath.c
mf_pack.c
mf_path.c
mf_qsort.c
mf_qsort2.c
mf_radix.c
mf_same.c
mf_sort.c
mf_soundex.c
mf_strip.c
mf_tempdir.c
mf_tempfile.c
mf_unixpath.c
mf_util.c
mf_wcomp.c
mf_wfile.c
mulalloc.c
my_access.c
my_aes.c
my_alarm.c
my_alloc.c
my_append.c
my_bit.c
my_bitmap.c
my_chsize.c
my_clock.c
my_compress.c
my_conio.c
my_copy.c
my_crc32.c
my_create.c
my_delete.c
my_div.c
my_dup.c
my_error.c
my_file.c
my_fopen.c
my_fstream.c
my_gethostbyname.c
my_gethwaddr.c
my_getopt.c
my_getpagesize.c
my_getsystime.c
my_getwd.c
my_handler.c
my_init.c
my_largepage.c
my_lib.c
my_libwrap.c
my_lock.c
my_lockmem.c
my_lread.c
my_lwrite.c
my_malloc.c
my_memmem.c
my_messnc.c
my_mkdir.c
my_mmap.c
my_net.c
my_netware.c
my_new.cc
my_once.c
my_open.c
my_os2cond.c
my_os2dirsrch.c
my_os2dirsrch.h
my_os2dlfcn.c
my_os2dlfcn.h0
my_os2file64.c
my_os2mutex.c
my_os2thread.c
my_os2tls.c
my_port.c
my_pread.c
my_pthread.c
my_quick.c
my_read.c
my_realloc.c
my_redel.c
my_rename.c
my_seek.c
my_sleep.c
my_static.c
my_static.h
my_symlink.c
my_symlink2.c
my_sync.c
my_thr_init.c
my_wincond.c
my_windac.c
my_winthread.c
my_write.c
mysys_priv.h
ptr_cmp.c
queues.c
raid.cc
raid2.c
rijndael.c
safemalloc.c
sha1.c
string.c
test_charset.c
test_dir.c
test_fn.c
test_xml.c
testhash.c
thr_alarm.c
thr_lock.c
thr_mutex.c
thr_rwlock.c
tree.c
typelib.c