my $st_del = $DB->prepare
("DELETE FROM playlist_position WHERE group_name = ? AND list_name = ?");
- for my $op (@ops) {
+ OP: for my $op (@ops) {
if ($op =~ /^ - (.++) $/x) {
my ($list) = ($1);
must_list $list; must_member $group, $list;
@r or die "`$list' is not a member of `$group'";
my ($cur) = @r; $st_getpos->finish;
- if ($rel eq "+") { $pos = $cur + $pos; }
- elsif ($rel eq "-") { $pos = $cur - $pos; }
+ my $end;
+ if ($rel eq "+") { $pos = $cur + $pos; $end = $n; }
+ elsif ($rel eq "-") { $pos = $cur - $pos; $end = 0; }
+ if ($pos == $end) { $st_del->execute($group, $list); next OP; }
}
0 <= $pos && $pos < $n
or die "`$list' position $pos out of range 0 .. $n";