* value.c (value_available_contents_eq): Remove redundant local
variables. Fix available contents comparision. * value.h (value_available_contents_eq): Extend describing comment.
This commit is contained in:
parent
60bbf3380a
commit
cd24cfaa4f
@ -1,3 +1,11 @@
|
||||
2011-02-16 Pedro Alves <pedro@codesourcery.com>
|
||||
Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* value.c (value_available_contents_eq): Remove redundant local
|
||||
variables. Fix available contents comparision.
|
||||
* value.h (value_available_contents_eq): Extend describing
|
||||
comment.
|
||||
|
||||
2011-02-16 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* thread.c (info_threads_command): Add missing i18n markup and remove
|
||||
|
21
gdb/value.c
21
gdb/value.c
@ -533,21 +533,13 @@ value_available_contents_eq (const struct value *val1, int offset1,
|
||||
const struct value *val2, int offset2,
|
||||
int length)
|
||||
{
|
||||
int org_len = length;
|
||||
int org_offset1 = offset1;
|
||||
int org_offset2 = offset2;
|
||||
int idx1 = 0, idx2 = 0;
|
||||
int prev_avail;
|
||||
|
||||
/* This routine is used by printing routines, where we should
|
||||
already have read the value. Note that we only know whether a
|
||||
value chunk is available if we've tried to read it. */
|
||||
gdb_assert (!val1->lazy && !val2->lazy);
|
||||
|
||||
/* The offset from either ORG_OFFSET1 or ORG_OFFSET2 where the
|
||||
available contents we haven't compared yet start. */
|
||||
prev_avail = 0;
|
||||
|
||||
while (length > 0)
|
||||
{
|
||||
range_s *r1, *r2;
|
||||
@ -561,9 +553,9 @@ value_available_contents_eq (const struct value *val1, int offset1,
|
||||
|
||||
/* The usual case is for both values to be completely available. */
|
||||
if (idx1 == -1 && idx2 == -1)
|
||||
return (memcmp (val1->contents + org_offset1 + prev_avail,
|
||||
val2->contents + org_offset2 + prev_avail,
|
||||
org_len - prev_avail) == 0);
|
||||
return (memcmp (val1->contents + offset1,
|
||||
val2->contents + offset2,
|
||||
length) == 0);
|
||||
/* The contents only match equal if the available set matches as
|
||||
well. */
|
||||
else if (idx1 == -1 || idx2 == -1)
|
||||
@ -596,12 +588,11 @@ value_available_contents_eq (const struct value *val1, int offset1,
|
||||
return 0;
|
||||
|
||||
/* Compare the _available_ contents. */
|
||||
if (memcmp (val1->contents + org_offset1 + prev_avail,
|
||||
val2->contents + org_offset2 + prev_avail,
|
||||
l2 - prev_avail) != 0)
|
||||
if (memcmp (val1->contents + offset1,
|
||||
val2->contents + offset2,
|
||||
l1) != 0)
|
||||
return 0;
|
||||
|
||||
prev_avail += h1;
|
||||
length -= h1;
|
||||
offset1 += h1;
|
||||
offset2 += h1;
|
||||
|
21
gdb/value.h
21
gdb/value.h
@ -379,12 +379,21 @@ extern void mark_value_bytes_unavailable (struct value *value,
|
||||
int offset, int length);
|
||||
|
||||
/* Compare LENGTH bytes of VAL1's contents starting at OFFSET1 with
|
||||
LENGTH bytes of VAL2's contents starting at OFFSET2. Returns true
|
||||
iff the set of available contents match. Unavailable contents
|
||||
compare equal with unavailable contents, and different with any
|
||||
available byte. For example, if 'x's represent an unavailable
|
||||
byte, and 'V' and 'Z' represent different available bytes, in a
|
||||
value with length 16:
|
||||
LENGTH bytes of VAL2's contents starting at OFFSET2.
|
||||
|
||||
Note that "contents" refers to the whole value's contents
|
||||
(value_contents_all), without any embedded offset adjustment. For
|
||||
example, to compare a complete object value with itself, including
|
||||
its enclosing type chunk, you'd do:
|
||||
|
||||
int len = TYPE_LENGTH (check_typedef (value_enclosing_type (val)));
|
||||
value_available_contents (val, 0, val, 0, len);
|
||||
|
||||
Returns true iff the set of available contents match. Unavailable
|
||||
contents compare equal with unavailable contents, and different
|
||||
with any available byte. For example, if 'x's represent an
|
||||
unavailable byte, and 'V' and 'Z' represent different available
|
||||
bytes, in a value with length 16:
|
||||
|
||||
offset: 0 4 8 12 16
|
||||
contents: xxxxVVVVxxxxVVZZ
|
||||
|
Loading…
Reference in New Issue
Block a user