oops - add missing piece of previous delta
authorNick Clifton <nickc@redhat.com>
Fri, 9 Nov 2018 12:51:46 +0000 (12:51 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 9 Nov 2018 12:51:46 +0000 (12:51 +0000)
binutils/strings.c

index eac7292dab8fcbf1de83064e9bafa41887cbaa81..e1fecc0932652490834200baf41b72eeb642c05e 100644 (file)
@@ -661,7 +661,43 @@ print_strings (const char *filename, FILE *stream, file_ptr address,
          if (c == EOF)
            break;
          if (! STRING_ISGRAPHIC (c))
-           break;
+           {
+             if (encoding_bytes > 1)
+               {
+                 /* In case of multibyte encodings rewind using magic buffer.  */
+                 if (magiccount == 0)
+                   {
+                     /* If no magic buffer exists: use memory of c.  */
+                     switch (encoding)
+                       {
+                       default:
+                         break;
+                       case 'b':
+                         c = c & 0xff;
+                         magiccount += 1;
+                         break;
+                       case 'l':
+                       case 'L':
+                         c = c >> 8;
+                         magiccount += (encoding_bytes -1);
+                         break;
+                       case 'B':
+                         c = (( c & 0xff0000) >> 16) | ( c & 0xff00)
+                           | (( c & 0xff) << 16);
+                         magiccount += 3;
+                         break;
+                       }
+                     magic = (char *) &c;
+                   }
+                 else
+                   {
+                     /* If magic buffer exists: rewind.  */
+                     magic = magic - (encoding_bytes -1);
+                   }
+                 address = address - (encoding_bytes -1);
+               }
+             break;
+           }
          putchar (c);
        }