Refine read_string
authorYao Qi <yao@codesourcery.com>
Sun, 23 Nov 2014 05:57:00 +0000 (13:57 +0800)
committerYao Qi <yao@codesourcery.com>
Sun, 23 Nov 2014 05:57:00 +0000 (13:57 +0800)
In read_string, we have this line

  chunksize = (len == -1 ? min (8, fetchlimit) : fetchlimit);

but chunksize is only used in the block that lne == -1, so IWBN to
move chunksize to the block in which it is used, and simplify the
condition setting chunksize.  This patch also moves 'found_nul' to
inner block.  This patch also splits a paragraph of comment into two,
and move them to different condition blocks (len > 0 and len == -1)
respectively.

gdb:

2014-11-23  Yao Qi  <yao@codesourcery.com>

* valprint.c (read_string): Move local variables 'found_nul',
'chunksize' and 'limit' to inner scope.  Update comments.

gdb/ChangeLog
gdb/valprint.c

index 6cab415646a848a126e038e4982614c6a0258873..2adf23bfa901896461a2a27d8678e85dae555d6e 100644 (file)
@@ -1,3 +1,8 @@
+2014-11-23  Yao Qi  <yao@codesourcery.com>
+
+       * valprint.c (read_string): Move local variables 'found_nul',
+       'chunksize' and 'limit' to inner scope.  Update comments.
+
 2014-11-22  Doug Evans  <xdje42@gmail.com>
 
        * symtab.c (lookup_symbol_in_objfile_from_linkage_name): Improve
index 52f028ebd662c3f0e4ddb87178ab69d10efe6444..b99530414b71e502e572c726bef2eb9174b633db 100644 (file)
@@ -1793,36 +1793,23 @@ int
 read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
             enum bfd_endian byte_order, gdb_byte **buffer, int *bytes_read)
 {
-  int found_nul;               /* Non-zero if we found the nul char.  */
   int errcode;                 /* Errno returned from bad reads.  */
   unsigned int nfetch;         /* Chars to fetch / chars fetched.  */
-  unsigned int chunksize;      /* Size of each fetch, in chars.  */
   gdb_byte *bufptr;            /* Pointer to next available byte in
                                   buffer.  */
-  gdb_byte *limit;             /* First location past end of fetch buffer.  */
   struct cleanup *old_chain = NULL;    /* Top of the old cleanup chain.  */
 
-  /* Decide how large of chunks to try to read in one operation.  This
-     is also pretty simple.  If LEN >= zero, then we want fetchlimit chars,
-     so we might as well read them all in one operation.  If LEN is -1, we
-     are looking for a NUL terminator to end the fetching, so we might as
-     well read in blocks that are large enough to be efficient, but not so
-     large as to be slow if fetchlimit happens to be large.  So we choose the
-     minimum of 8 and fetchlimit.  We used to use 200 instead of 8 but
-     200 is way too big for remote debugging over a serial line.  */
-
-  chunksize = (len == -1 ? min (8, fetchlimit) : fetchlimit);
-
   /* Loop until we either have all the characters, or we encounter
      some error, such as bumping into the end of the address space.  */
 
-  found_nul = 0;
   *buffer = NULL;
 
   old_chain = make_cleanup (free_current_contents, buffer);
 
   if (len > 0)
     {
+      /* We want fetchlimit chars, so we might as well read them all in
+        one operation.  */
       unsigned int fetchlen = min (len, fetchlimit);
 
       *buffer = (gdb_byte *) xmalloc (fetchlen * width);
@@ -1836,6 +1823,18 @@ read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
   else if (len == -1)
     {
       unsigned long bufsize = 0;
+      unsigned int chunksize;  /* Size of each fetch, in chars.  */
+      int found_nul;           /* Non-zero if we found the nul char.  */
+      gdb_byte *limit;         /* First location past end of fetch buffer.  */
+
+      found_nul = 0;
+      /* We are looking for a NUL terminator to end the fetching, so we
+        might as well read in blocks that are large enough to be efficient,
+        but not so large as to be slow if fetchlimit happens to be large.
+        So we choose the minimum of 8 and fetchlimit.  We used to use 200
+        instead of 8 but 200 is way too big for remote debugging over a
+         serial line.  */
+      chunksize = min (8, fetchlimit);
 
       do
        {