You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.6 KiB
42 lines
1.6 KiB
diff --git a/SAX/PurePerl.pm b/SAX/PurePerl.pm |
|
--- a/SAX/PurePerl.pm 2006-04-24 01:20:09.000000000 +0200 |
|
+++ b/SAX/PurePerl.pm 2012-08-09 12:47:48.736728516 +0200 |
|
@@ -595,22 +595,23 @@ sub Comment { |
|
|
|
my $data = $reader->data(4); |
|
if ($data =~ /^<!--/) { |
|
- $reader->move_along(4); |
|
+ $reader->move_along(4); # skip comment start |
|
+ $data = $reader->data; |
|
+ while ($data !~ m!-->!) { |
|
+ my $n = $reader->read_more; |
|
+ $self->parser_error("End of data seen while looking for close comment marker", $reader) |
|
+ unless $n; |
|
+ $data = $reader->data; |
|
+ } |
|
+ |
|
my $comment_str = ''; |
|
- while (1) { |
|
- my $data = $reader->data; |
|
- $self->parser_error("End of data seen while looking for close comment marker", $reader) |
|
- unless length($data); |
|
- if ($data =~ /^(.*?)-->/s) { |
|
- $comment_str .= $1; |
|
- $self->parser_error("Invalid comment (dash)", $reader) if $comment_str =~ /-$/; |
|
- $reader->move_along(length($1) + 3); |
|
- last; |
|
- } |
|
- else { |
|
- $comment_str .= $data; |
|
- $reader->move_along(length($data)); |
|
- } |
|
+ if ($data =~ /^(.*?)-->/s) { |
|
+ $comment_str = $1; |
|
+ $self->parser_error("Invalid comment (dash)", $reader) if $comment_str =~ /-$/; |
|
+ $reader->move_along(length($1) + 3); |
|
+ } |
|
+ else { |
|
+ return 0; |
|
} |
|
|
|
$self->comment({ Data => $comment_str });
|
|
|