diff --git a/doc/CHANGELOG b/doc/CHANGELOG index d0984ca..44d664f 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -3,6 +3,8 @@ Auto IRC Bot 3.0: Change Log 3.0 Indev ================================================================== + * Bug fix: conf_get() now returns correct data by checking + what type of reference the requested value is. * Foundation completed. * Added API function err() * Added API function dbug() diff --git a/src/API/Std.pm b/src/API/Std.pm index a413c77..8510553 100644 --- a/src/API/Std.pm +++ b/src/API/Std.pm @@ -59,13 +59,28 @@ sub conf_get # Return the requested configuration value(s). if ($count == 1) { - return $Auto::SETTINGS{$val[0]}; + if (ref($Auto::SETTINGS{$val[0]}) eq 'HASH') { + return %{ $Auto::SETTINGS{$val[0]} }; + } + else { + return $Auto::SETTINGS{$val[0]}; + } } elsif ($count == 2) { - return $Auto::SETTINGS{$val[0]}{$val[1]}; + if (ref($Auto::SETTINGS{$val[0]}{$val[1]}) eq 'HASH') { + return %{ $Auto::SETTINGS{$val[0]}{$val[1]} }; + } + else { + return $Auto::SETTINGS{$val[0]}{$val[1]}; + } } elsif ($count == 3) { - return $Auto::SETTINGS{$val[0]}{$val[1]}{$val[2]}; + if (ref($Auto::SETTINGS{$val[0]}{$val[1]}{$val[2]}) eq 'HASH') { + return %{ $Auto::SETTINGS{$val[0]}{$val[1]}{$val[2]} }; + } + else { + return $Auto::SETTINGS{$val[0]}{$val[1]}{$val[2]}; + } } else { return 0;