86 lines
3.0 KiB
Diff
86 lines
3.0 KiB
Diff
|
commit 407cb192dcac2602aebaa7e262419adb580ecca6
|
||
|
Author: cmoller <cmoller>
|
||
|
Date: Thu Apr 22 20:12:06 2010 +0000
|
||
|
|
||
|
* cp-valprint.c (cp_print_value_fields): Replaced obstack_base()
|
||
|
method of popping recursion-detection stack with a method based on
|
||
|
obstack_object_size(). (Similar to the PR9167 patch below, but for
|
||
|
the static array obstack rather than the static member obstack.)
|
||
|
|
||
|
### a/gdb/ChangeLog
|
||
|
### b/gdb/ChangeLog
|
||
|
## -1,3 +1,10 @@
|
||
|
+2010-04-22 Chris Moller <cmoller@redhat.com>
|
||
|
+
|
||
|
+ * cp-valprint.c (cp_print_value_fields): Replaced obstack_base()
|
||
|
+ method of popping recursion-detection stack with a method based on
|
||
|
+ obstack_object_size(). (Similar to the PR9167 patch below, but for
|
||
|
+ the static array obstack rather than the static member obstack.)
|
||
|
+
|
||
|
2010-04-22 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
|
||
|
* amd64-linux-nat.c (amd64_linux_gregset64_reg_offset): Removed.
|
||
|
--- a/gdb/cp-valprint.c
|
||
|
+++ b/gdb/cp-valprint.c
|
||
|
@@ -186,18 +186,18 @@ cp_print_value_fields (struct type *type, struct type *real_type,
|
||
|
fprintf_filtered (stream, "<No data fields>");
|
||
|
else
|
||
|
{
|
||
|
- int obstack_initial_size = 0;
|
||
|
- void *stat_array_obstack_top = NULL;
|
||
|
+ int statmem_obstack_initial_size = 0;
|
||
|
+ int stat_array_obstack_initial_size = 0;
|
||
|
|
||
|
if (dont_print_statmem == 0)
|
||
|
{
|
||
|
- obstack_initial_size =
|
||
|
+ statmem_obstack_initial_size =
|
||
|
obstack_object_size (&dont_print_statmem_obstack);
|
||
|
|
||
|
if (last_set_recurse != recurse)
|
||
|
{
|
||
|
- stat_array_obstack_top
|
||
|
- = obstack_next_free (&dont_print_stat_array_obstack);
|
||
|
+ stat_array_obstack_initial_size =
|
||
|
+ obstack_object_size (&dont_print_stat_array_obstack);
|
||
|
last_set_recurse = recurse;
|
||
|
}
|
||
|
}
|
||
|
@@ -323,12 +323,12 @@ cp_print_value_fields (struct type *type, struct type *real_type,
|
||
|
int obstack_final_size =
|
||
|
obstack_object_size (&dont_print_statmem_obstack);
|
||
|
|
||
|
- if (obstack_final_size > obstack_initial_size) {
|
||
|
+ if (obstack_final_size > statmem_obstack_initial_size) {
|
||
|
/* In effect, a pop of the printed-statics stack. */
|
||
|
|
||
|
void *free_to_ptr =
|
||
|
obstack_next_free (&dont_print_statmem_obstack) -
|
||
|
- (obstack_final_size - obstack_initial_size);
|
||
|
+ (obstack_final_size - statmem_obstack_initial_size);
|
||
|
|
||
|
obstack_free (&dont_print_statmem_obstack,
|
||
|
free_to_ptr);
|
||
|
@@ -336,9 +336,18 @@ cp_print_value_fields (struct type *type, struct type *real_type,
|
||
|
|
||
|
if (last_set_recurse != recurse)
|
||
|
{
|
||
|
- if (obstack_object_size (&dont_print_stat_array_obstack) > 0)
|
||
|
- obstack_free (&dont_print_stat_array_obstack,
|
||
|
- stat_array_obstack_top);
|
||
|
+ int obstack_final_size =
|
||
|
+ obstack_object_size (&dont_print_stat_array_obstack);
|
||
|
+
|
||
|
+ if (obstack_final_size > stat_array_obstack_initial_size)
|
||
|
+ {
|
||
|
+ void *free_to_ptr =
|
||
|
+ obstack_next_free (&dont_print_stat_array_obstack) -
|
||
|
+ (obstack_final_size - stat_array_obstack_initial_size);
|
||
|
+
|
||
|
+ obstack_free (&dont_print_stat_array_obstack,
|
||
|
+ free_to_ptr);
|
||
|
+ }
|
||
|
last_set_recurse = -1;
|
||
|
}
|
||
|
}
|