summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2015-02-19 14:55:50 -0800
committerLamont Granquist <lamont@scriptkiddie.org>2015-02-23 10:14:04 -0800
commit2d324fc863d81118d586734ea0f9cd937ee2dd10 (patch)
tree751a235e9a38d775a4e5b6097588ce78f88a4c75
parent30520d738a3683b15a70d43dd9cf1aa3da61686d (diff)
downloadchef-2d324fc863d81118d586734ea0f9cd937ee2dd10.tar.gz
handle autovivifying ivars on access
-rw-r--r--lib/chef/mixin/params_validate.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/chef/mixin/params_validate.rb b/lib/chef/mixin/params_validate.rb
index 0a84d9b6e9..b96e1fb978 100644
--- a/lib/chef/mixin/params_validate.rb
+++ b/lib/chef/mixin/params_validate.rb
@@ -85,8 +85,13 @@ class Chef
def nillable_set_or_return(symbol, arg, validation)
iv_symbol = "@#{symbol.to_s}".to_sym
- if arg == NULL_ARG && self.instance_variable_defined?(iv_symbol) == true
- get_ivar(iv_symbol, symbol, validation)
+ if arg == NULL_ARG
+ if self.instance_variable_defined?(iv_symbol) == true
+ get_ivar(iv_symbol, symbol, validation)
+ else
+ # on access we create the iv and set it to nil for back-compat
+ set_ivar(iv_symbol, symbol, nil, validation)
+ end
else
set_ivar(iv_symbol, symbol, arg, validation)
end