aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2008-09-08 21:16:18 +0000
committerPedro Alves <palves@redhat.com>2008-09-08 21:16:18 +0000
commit5822d809e73ed680e384213620a148b2e86c3b13 (patch)
tree779cf95fe8f27667b9f74c8b15cc3db6b7490c44 /gdb
parentde9f48f0c431c9dcbee390a7ba8aad1a4f45128c (diff)
downloadgdb-5822d809e73ed680e384213620a148b2e86c3b13.zip
gdb-5822d809e73ed680e384213620a148b2e86c3b13.tar.gz
gdb-5822d809e73ed680e384213620a148b2e86c3b13.tar.bz2
* regcache.c (new_register_cache): Return NULL if the register
cache size isn't known yet. (free_register_cache): Avoid dereferencing a NULL regcache.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/gdbserver/ChangeLog6
-rw-r--r--gdb/gdbserver/regcache.c10
2 files changed, 14 insertions, 2 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index b84dc01..0b5d10b 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,9 @@
+2008-09-08 Pedro Alves <pedro@codesourcery.com>
+
+ * regcache.c (new_register_cache): Return NULL if the register
+ cache size isn't known yet.
+ (free_register_cache): Avoid dereferencing a NULL regcache.
+
2008-09-04 Daniel Jacobowitz <dan@codesourcery.com>
* configure.srv: Merge MIPS and MIPS64.
diff --git a/gdb/gdbserver/regcache.c b/gdb/gdbserver/regcache.c
index a324d43..b5ec215 100644
--- a/gdb/gdbserver/regcache.c
+++ b/gdb/gdbserver/regcache.c
@@ -91,6 +91,9 @@ new_register_cache (void)
{
struct inferior_regcache_data *regcache;
+ if (register_bytes == 0)
+ return NULL; /* The architecture hasn't been initialized yet. */
+
regcache = malloc (sizeof (*regcache));
/* Make sure to zero-initialize the register cache when it is created,
@@ -111,8 +114,11 @@ free_register_cache (void *regcache_p)
struct inferior_regcache_data *regcache
= (struct inferior_regcache_data *) regcache_p;
- free (regcache->registers);
- free (regcache);
+ if (regcache)
+ {
+ free (regcache->registers);
+ free (regcache);
+ }
}
static void