Small refactor in ada-lang.c:scan_discrim_bound

Factor out common arithmetic operations for clarity.

gdb/ChangeLog:

	* ada-lang.c (scan_discrim_bound): Factor out arithmetic
	operations.
This commit is contained in:
Simon Marchi 2015-09-10 11:48:47 -04:00
parent 108d56a48b
commit 5da1a4d34e
2 changed files with 16 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2015-09-10 Simon Marchi <simon.marchi@ericsson.com>
* ada-lang.c (scan_discrim_bound): Factor out arithmetic
operations.
2015-09-10 Simon Marchi <simon.marchi@ericsson.com> 2015-09-10 Simon Marchi <simon.marchi@ericsson.com>
* ada-lang.c (ada_search_struct_field): Constify parameters * ada-lang.c (ada_search_struct_field): Constify parameters

View File

@ -11432,24 +11432,29 @@ scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
{ {
static char *bound_buffer = NULL; static char *bound_buffer = NULL;
static size_t bound_buffer_len = 0; static size_t bound_buffer_len = 0;
const char *pend, *bound; const char *pstart, *pend, *bound;
struct value *bound_val; struct value *bound_val;
if (dval == NULL || str == NULL || str[k] == '\0') if (dval == NULL || str == NULL || str[k] == '\0')
return 0; return 0;
pend = strstr (str + k, "__"); pstart = str + k;
pend = strstr (pstart, "__");
if (pend == NULL) if (pend == NULL)
{ {
bound = str + k; bound = pstart;
k += strlen (bound); k += strlen (bound);
} }
else else
{ {
GROW_VECT (bound_buffer, bound_buffer_len, pend - (str + k) + 1); int len = pend - pstart;
/* Strip __ and beyond. */
GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
strncpy (bound_buffer, pstart, len);
bound_buffer[len] = '\0';
bound = bound_buffer; bound = bound_buffer;
strncpy (bound_buffer, str + k, pend - (str + k));
bound_buffer[pend - (str + k)] = '\0';
k = pend - str; k = pend - str;
} }