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.
43 lines
1.6 KiB
43 lines
1.6 KiB
diff --git a/lib/XML/SAX/PurePerl.pm b/lib/XML/SAX/PurePerl.pm
|
|
--- a/lib/XML/SAX/PurePerl.pm 2006-04-24 01:20:09.000000000 +0200
|
|
+++ b/lib/XML/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 });
|