Index: /veekun/trunk/lib/Vee/Controller/Root.pm
===================================================================
--- /veekun/trunk/lib/Vee/Controller/Root.pm (revision 425)
+++ /veekun/trunk/lib/Vee/Controller/Root.pm (revision 463)
@@ -264,4 +264,6 @@
     my (undef, $details, undef, @log) = <$svn_fh>;
     close $svn_fh;
+    die "Couldn't get svn details" if not defined $details;
+
     my ($rev, $user, $time, undef) = split / \| /, $details;
     $rev =~ s/^r//;
Index: /veekun/trunk/lib/Vee/Utils.pm
===================================================================
--- /veekun/trunk/lib/Vee/Utils.pm (revision 424)
+++ /veekun/trunk/lib/Vee/Utils.pm (revision 463)
@@ -51,4 +51,5 @@
 sub postrank {
     my ($post_count) = @_;
+    $post_count ||= 0;
     for my $rank (
         sort { $b <=> $a }
@@ -115,5 +116,5 @@
 sub hexcolor { return tohex($_[0]).tohex($_[1]).tohex($_[2]); }
 sub tohex { return sprintf("%02x", $_[0]); }
-sub isnum { return ($_[0] =~ /^ [+-]? \d+ (?:\. [0-9]*)? $/x) }
+sub isnum { return (defined $_[0] and $_[0] =~ /^ [+-]? \d+ (?:\. [0-9]*)? $/x) }
 sub max { my ($i, $max); while (!defined $max) { $max = shift; } for $i (@_) { next unless defined $i; if ($i > $max) { $max = $i } } return $max; }
 sub min { my ($i, $min); while (!defined $min) { $min = shift; }  for $i (@_) { next unless defined $i; if ($i < $min) { $min = $i } } return $min; }
Index: /veekun/trunk/lib/Vee/Form.pm
===================================================================
--- /veekun/trunk/lib/Vee/Form.pm (revision 433)
+++ /veekun/trunk/lib/Vee/Form.pm (revision 463)
@@ -275,4 +275,6 @@
         }
     }
+
+    $attr{value} = '' if not defined $attr{value};
 
     # boring old textbox or passwordbox; nothing special
