Author: eadler
Date: Thu Mar  8 06:54:33 2018
New Revision: 330633
URL: https://svnweb.freebsd.org/changeset/base/330633

Log:
  MFC r309220:
  
  indent(1): Properly handle the wide string literal and wide char constant L.
  
  indent(1) treated the "L" in "L'a'" as if it were an identifier and forced
  a space character after it, breaking valid code.
  
  PR:           143090

Modified:
  stable/11/usr.bin/indent/indent.c
  stable/11/usr.bin/indent/indent_codes.h
  stable/11/usr.bin/indent/lexi.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/usr.bin/indent/indent.c
==============================================================================
--- stable/11/usr.bin/indent/indent.c   Thu Mar  8 06:51:17 2018        
(r330632)
+++ stable/11/usr.bin/indent/indent.c   Thu Mar  8 06:54:33 2018        
(r330633)
@@ -1017,6 +1017,16 @@ check_type:
            ps.want_blank = true;
            break;
 
+       case strpfx:
+           if (ps.want_blank)
+               *e_code++ = ' ';
+           for (t_ptr = token; *t_ptr; ++t_ptr) {
+               CHECK_SIZE_CODE;
+               *e_code++ = *t_ptr;
+           }
+           ps.want_blank = false;
+           break;
+
        case period:            /* treat a period kind of like a binary
                                 * operation */
            *e_code++ = '.';    /* move the period into line */

Modified: stable/11/usr.bin/indent/indent_codes.h
==============================================================================
--- stable/11/usr.bin/indent/indent_codes.h     Thu Mar  8 06:51:17 2018        
(r330632)
+++ stable/11/usr.bin/indent/indent_codes.h     Thu Mar  8 06:54:33 2018        
(r330633)
@@ -68,3 +68,4 @@
 #define ifhead         30
 #define elsehead       31
 #define period         32
+#define strpfx         33

Modified: stable/11/usr.bin/indent/lexi.c
==============================================================================
--- stable/11/usr.bin/indent/lexi.c     Thu Mar  8 06:51:17 2018        
(r330632)
+++ stable/11/usr.bin/indent/lexi.c     Thu Mar  8 06:54:33 2018        
(r330633)
@@ -228,6 +228,11 @@ lexi(void)
                    fill_buffer();
            }
        *e_token++ = '\0';
+
+       if (s_token[0] == 'L' && s_token[1] == '\0' &&
+             (*buf_ptr == '"' || *buf_ptr == '\''))
+           return (strpfx);
+
        while (*buf_ptr == ' ' || *buf_ptr == '\t') {   /* get rid of blanks */
            if (++buf_ptr >= buf_end)
                fill_buffer();
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to