aboutsummaryrefslogtreecommitdiff
path: root/gas/listing.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2009-03-24 01:04:25 +0000
committerH.J. Lu <hjl.tools@gmail.com>2009-03-24 01:04:25 +0000
commitd67ffd56e13eaa14f522a1edc592d69da3bc66a1 (patch)
treef461f7ceeff19792b8080998f58ca7239ab95ccc /gas/listing.c
parent36959681867a70c8f48055ffb22b6f037596b762 (diff)
downloadfsf-binutils-gdb-d67ffd56e13eaa14f522a1edc592d69da3bc66a1.zip
fsf-binutils-gdb-d67ffd56e13eaa14f522a1edc592d69da3bc66a1.tar.gz
fsf-binutils-gdb-d67ffd56e13eaa14f522a1edc592d69da3bc66a1.tar.bz2
2009-03-23 H.J. Lu <hongjiu.lu@intel.com>
PR gas/9966 * listing.c (listing_newline): Properly handle `\\"' and ';'. * read.c (is_end_of_line): Update comments for line separator. (read_begin): Set line separator in is_end_of_line to 2.
Diffstat (limited to 'gas/listing.c')
-rw-r--r--gas/listing.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gas/listing.c b/gas/listing.c
index 025a2ca..e307be2 100644
--- a/gas/listing.c
+++ b/gas/listing.c
@@ -338,13 +338,18 @@ listing_newline (char *ps)
char *copy;
int len;
int seen_quote = 0;
+ int seen_slash = 0;
for (copy = input_line_pointer - 1;
*copy && (seen_quote
- || (! is_end_of_line [(unsigned char) *copy]));
+ || is_end_of_line [(unsigned char) *copy] != 1);
copy++)
- if (*copy == '"' && copy[-1] != '\\')
- seen_quote = ! seen_quote;
+ {
+ if (*copy == '\\')
+ seen_slash = ! seen_slash;
+ else if (*copy == '"' && seen_slash)
+ seen_quote = ! seen_quote;
+ }
len = (copy - input_line_pointer) + 2;