From 6fa013ff149ae43a696ef5bd23410a41440ac2a5 Mon Sep 17 00:00:00 2001 From: Mercier Pierre-Olivier Date: Mon, 30 Sep 2013 13:08:33 +0200 Subject: [PATCH] Globbing in grading is not critical --- ACU/Grading.pm | 22 +++++++++++++++------- ACU/Tinyglob.pm | 5 +++-- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/ACU/Grading.pm b/ACU/Grading.pm index dd1d64f..b01693c 100644 --- a/ACU/Grading.pm +++ b/ACU/Grading.pm @@ -290,6 +290,8 @@ use strict; use warnings; use Term::ANSIColor qw(:constants); +use ACU::Log; + sub new ($$$$$) { my $class = shift; @@ -344,14 +346,20 @@ sub compute ($$$;$$$) if (defined $ref) { - my $glob = Tinyglob::tinyglob($ref); - if ($glob ne $ref) - { - my $value = 0; - for my $r (grep { /^$glob$/ } keys %$ids) { - $value += $ids->{ $r }; + eval { + my $glob = Tinyglob::tinyglob($ref); + if ($glob ne $ref) + { + my $value = 0; + for my $r (grep { /^$glob$/ } keys %$ids) { + $value += $ids->{ $r }; + } + $ids->{ $ref } = $value; } - $ids->{ $ref } = $value; + }; + if ($@) { + my $err = $@; + log ERROR, $@; } } diff --git a/ACU/Tinyglob.pm b/ACU/Tinyglob.pm index 3c19a5a..6fc9ed8 100644 --- a/ACU/Tinyglob.pm +++ b/ACU/Tinyglob.pm @@ -12,7 +12,8 @@ our @EXPORT = qw(tinyglob); sub tinyglob { - my @str = split("", quotemeta(shift)); + my $orig = shift; + my @str = split("", quotemeta($orig)); my $res = ""; my $metaescape = 0; @@ -38,7 +39,7 @@ sub tinyglob $res .= '.*'; } else { - croak "Invalid number of \\"; + croak "Invalid number of \\ in '$orig'"; } } else {