OSDN Git Service

* regcache.c (new_register_cache): Return NULL if the register
authorPedro Alves <pedro@codesourcery.com>
Mon, 8 Sep 2008 21:16:18 +0000 (21:16 +0000)
committerPedro Alves <pedro@codesourcery.com>
Mon, 8 Sep 2008 21:16:18 +0000 (21:16 +0000)
cache size isn't known yet.
(free_register_cache): Avoid dereferencing a NULL regcache.

gdb/gdbserver/ChangeLog
gdb/gdbserver/regcache.c

index b84dc01..0b5d10b 100644 (file)
@@ -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.
index a324d43..b5ec215 100644 (file)
@@ -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