]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit - gdb/ada-lang.c
[Ada] pspace_data->sym_cache is always NULL
authorJoel Brobecker <brobecker@adacore.com>
Mon, 2 Feb 2015 03:20:58 +0000 (07:20 +0400)
committerJoel Brobecker <brobecker@adacore.com>
Mon, 2 Feb 2015 03:22:40 +0000 (07:22 +0400)
commit66c168ae56fa2d67f821ccae774fd25c695fd9ce
treedc43c58dcab2d86c90591bf09846f4c25bb39f34
parented2b91f0d8ecc0a6ce61abe40962e132a5f90d91
[Ada] pspace_data->sym_cache is always NULL

The Ada symbol cache has been designed to have one instance of that
of that cache per program space, and for each instance to be created
on-demand. ada_get_symbol_cache is the function responsible for both
lookup and creation on demand.

Unfortunately, ada_get_symbol_cache forgot to store the reference
to newly created caches, thus causing it to:
  - Leak old caches;
  - Allocate a new cache each time the cache is being searched or
    a new entry is to be inserted.

This patch fixes the issue by avoiding the use of the local variable,
which indirectly allowed the bug to happen. We manipulate the reference
in the program-space data instead.

gdb/ChangeLog:

        PR gdb/17854:
        * ada-lang.c (ada_get_symbol_cache): Set pspace_data->sym_cache
        when allocating a new one.
gdb/ChangeLog
gdb/ada-lang.c