-
Notifications
You must be signed in to change notification settings - Fork 136
Commit
When calling a function directly from a `defer` statement, like so: ```go var err error exit := someFuncReturningAFunctor() defer exit(err) ``` The `exit` function is passed the `err` variable by value, which means that the value of `err` will always be nil above. In order to have the deferred `exit` function use the value of the `err` variable *on exit of the function*, you need to wrap the `exit` call inside a temporary function, like so: ```go var err error exit := someFuncReturningAFunctor() defer func() { exit(err) }() ``` See here for more information about this odd behaviour: https://stackoverflow.com/questions/42703707/when-defer-func-evaluates-its-parameters The alternative solution here was to change `exit`'s call signature to accept a `*error` instead of an `error`, however we have code out there in the controllers that would break if we changed `exit`'s function signature. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.