ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/lib/cf.pm
(Generate patch)

Comparing deliantra/server/lib/cf.pm (file contents):
Revision 1.30 by elmex, Sat Aug 12 11:51:37 2006 UTC vs.
Revision 1.31 by elmex, Mon Aug 14 04:22:04 2006 UTC

180 180
181sub unload_extension { 181sub unload_extension {
182 my ($pkg) = @_; 182 my ($pkg) = @_;
183 183
184 warn "removing extension $pkg\n"; 184 warn "removing extension $pkg\n";
185
186 if (my $cb = $pkg->can ("on_unload")) {
187 $cb->($pkg);
188 }
189 185
190 # remove hooks 186 # remove hooks
191 for my $idx (0 .. $#EVENT) { 187 for my $idx (0 .. $#EVENT) {
192 delete $hook[$idx]{$pkg}; 188 delete $hook[$idx]{$pkg};
193 } 189 }
206 } 202 }
207 203
208 # remove extcmds 204 # remove extcmds
209 for my $name (grep $extcmd{$_}[1] eq $pkg, keys %extcmd) { 205 for my $name (grep $extcmd{$_}[1] eq $pkg, keys %extcmd) {
210 delete $extcmd{$name}; 206 delete $extcmd{$name};
207 }
208
209 if (my $cb = $pkg->can ("on_unload")) {
210 eval {
211 $cb->($pkg);
212 1
213 } or warn "$pkg unloaded, but with errors: $@";
211 } 214 }
212 215
213 Symbol::delete_package $pkg; 216 Symbol::delete_package $pkg;
214} 217}
215 218

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines