--- deliantra/Deliantra-Client/DC.pm 2006/08/15 06:30:05 1.115 +++ deliantra/Deliantra-Client/DC.pm 2006/09/12 20:48:17 1.118 @@ -15,7 +15,7 @@ package CFPlus; BEGIN { - $VERSION = '0.2'; + $VERSION = '0.5'; use XSLoader; XSLoader::load "CFPlus", $VERSION; @@ -71,7 +71,12 @@ sub put($$$) { my ($db, $key, $data) = @_; - $DB_SYNC{$db} = AnyEvent->timer (after => 5, cb => sub { $db->db_sync }); + my $hkey = $db + 0; + Scalar::Util::weaken $db; + $DB_SYNC{$hkey} ||= AnyEvent->timer (after => 5, cb => sub { + delete $DB_SYNC{$hkey}; + $db->db_sync if $db; + }); $db->db_put ($key => $data) }