This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Small refactor in ada-lang.c:scan_discrim_bound


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5da1a4d34e730e0b4e2f034c81d22d5948a6ce67

commit 5da1a4d34e730e0b4e2f034c81d22d5948a6ce67
Author: Simon Marchi <simon.marchi@ericsson.com>
Date:   Thu Sep 10 11:48:47 2015 -0400

    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.

Diff:
---
 gdb/ChangeLog  |  5 +++++
 gdb/ada-lang.c | 17 +++++++++++------
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b72031a..2404edd 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
 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>
+
 	* ada-lang.c (ada_search_struct_field): Constify parameters
 	and/or variables..
 	(xget_renaming_scope): Likewise.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index a514f65..d166d1c 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -11432,24 +11432,29 @@ scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
 {
   static char *bound_buffer = NULL;
   static size_t bound_buffer_len = 0;
-  const char *pend, *bound;
+  const char *pstart, *pend, *bound;
   struct value *bound_val;
 
   if (dval == NULL || str == NULL || str[k] == '\0')
     return 0;
 
-  pend = strstr (str + k, "__");
+  pstart = str + k;
+  pend = strstr (pstart, "__");
   if (pend == NULL)
     {
-      bound = str + k;
+      bound = pstart;
       k += strlen (bound);
     }
   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;
-      strncpy (bound_buffer, str + k, pend - (str + k));
-      bound_buffer[pend - (str + k)] = '\0';
       k = pend - str;
     }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]