aboutsummaryrefslogtreecommitdiffstats
path: root/lib/LXRng/Parse/Simple.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/LXRng/Parse/Simple.pm')
-rw-r--r--lib/LXRng/Parse/Simple.pm7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/LXRng/Parse/Simple.pm b/lib/LXRng/Parse/Simple.pm
index d89ea22..3cbebf1 100644
--- a/lib/LXRng/Parse/Simple.pm
+++ b/lib/LXRng/Parse/Simple.pm
@@ -66,6 +66,7 @@ sub nextfrag {
my ($self) = @_;
my $btype;
+ my $pos = 0;
while (1) {
if (defined $btype) {
if ($$self{'rest'} =~ s/\A((?s:.*?)$$self{'term'}[$btype])//m) {
@@ -79,8 +80,9 @@ sub nextfrag {
}
}
else {
- if ($$self{'rest'} =~ s/\A((?s).*?)($$self{'open'})//m) {
- my $pref = $1;
+ pos($$self{'rest'}) = $pos;
+ if ($$self{'rest'} =~ s/\G((?s).*?)($$self{'open'})//m) {
+ my $pref = substr($$self{'rest'}, 0, $pos, '').$1;
my $frag = $2;
if ($pref ne '') {
@@ -117,6 +119,7 @@ sub nextfrag {
}
untabify($line, $$self{'tabwidth'});
+ $pos = length($$self{'rest'});
$$self{'rest'} .= $line;
unless ($$self{'bofseen'}) {