OSDN Git Service

* ada-lang.c (grow_vect): Return the new array instead of
authorAndreas Schwab <schwab@suse.de>
Sat, 23 Oct 2004 19:13:26 +0000 (19:13 +0000)
committerAndreas Schwab <schwab@suse.de>
Sat, 23 Oct 2004 19:13:26 +0000 (19:13 +0000)
expecting pointer to pointer to avoid violation of aliasing rules.
* ada-lang.h (GROW_VECT): Adapt call to grow_vect.

gdb/ChangeLog
gdb/ada-lang.c
gdb/ada-lang.h

index 12485fa..0df3786 100644 (file)
@@ -1,3 +1,9 @@
+2004-10-23  Andreas Schwab  <schwab@suse.de>
+
+       * ada-lang.c (grow_vect): Return the new array instead of               
+       expecting pointer to pointer to avoid violation of aliasing rules.      
+       * ada-lang.h (GROW_VECT): Adapt call to grow_vect.
+
 2004-10-23  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * s390-tdep.c (enum pv_boolean): Remove.
index 275e3a0..00e61a4 100644 (file)
@@ -319,20 +319,21 @@ extract_string (CORE_ADDR addr, char *buf)
   while (buf[char_index - 1] != '\000');
 }
 
-/* Assuming *OLD_VECT points to an array of *SIZE objects of size
+/* Assuming VECT points to an array of *SIZE objects of size
    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
-   updating *OLD_VECT and *SIZE as necessary.  */
+   updating *SIZE as necessary and returning the (new) array.  */
 
-void
-grow_vect (void **old_vect, size_t * size, size_t min_size, int element_size)
+void *
+grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
 {
   if (*size < min_size)
     {
       *size *= 2;
       if (*size < min_size)
         *size = min_size;
-      *old_vect = xrealloc (*old_vect, *size * element_size);
+      vect = xrealloc (vect, *size * element_size);
     }
+  return vect;
 }
 
 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
index 18a662a..3df4aa4 100644 (file)
@@ -171,9 +171,9 @@ extern struct task_entry *task_list;
    least M objects, updating V and S as necessary. */
 
 #define GROW_VECT(v, s, m)                                              \
-   if ((s) < (m)) grow_vect ((void**) &(v), &(s), (m), sizeof(*(v)));
+   if ((s) < (m)) (v) = grow_vect (v, &(s), m, sizeof *(v));
 
-extern void grow_vect (void **, size_t *, size_t, int);
+extern void *grow_vect (void *, size_t *, size_t, int);
 
 extern int ada_get_field_index (const struct type *type,
                                 const char *field_name,