Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Catch panics when calling GoString like fmt %#v does (#1) #87

Merged
merged 1 commit into from Aug 25, 2022

Conversation

benhoyt
Copy link
Contributor

@benhoyt benhoyt commented Aug 21, 2022

This handles a few cases (similar to how fmt %#v does):

  • A GoString method on a value receiver, called with a nil pointer
  • A GoString method on a pointer receiver that doesn't check for nil
  • A GoString method that panics in some other way

Because Go 1.17 added a method Time.GoString with value receiver, this
broke structs that had *time.Time fields with nil values (which is
common!).

Also added a bunch of tests for these cases.

Fixes #77

This handles a few cases (similar to how fmt %#v does):

- A GoString method on a value receiver, called with a nil pointer
- A GoString method on a pointer receiver that doesn't check for nil
- A GoString method that panics in some other way

Because Go 1.17 added a method Time.GoString with value receiver, this
broke structs that had *time.Time fields with nil values (which is
common!).

Also added a bunch of tests for these cases.

This should address kr#77

Co-authored-by: Jordan Barrett <jordan.barrett@canonical.com>
@kr
Copy link
Owner

kr commented Aug 25, 2022

Thanks for the fix! I agree this is a good approach. Very general.

@kr kr merged commit d8c7eb1 into kr:main Aug 25, 2022
tjex added a commit to zk-org/pretty that referenced this pull request Jan 10, 2024
* Update Dependencies  (kr#75)

This updates github.com/rogpeppe/go-internal from 1.6.1 to 1.8.0
and the github action 'setup-go' from v1 to v2.

It also adds a config file for dependabot to automatically check
this repo for new dependency versions weekly.

* Bump actions/checkout from 2 to 3 (kr#84)

Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Catch panics when calling GoString like fmt %#v does (kr#87)

This handles a few cases (similar to how fmt %#v does):

- A GoString method on a value receiver, called with a nil pointer
- A GoString method on a pointer receiver that doesn't check for nil
- A GoString method that panics in some other way

Because Go 1.17 added a method Time.GoString with value receiver, this
broke structs that had *time.Time fields with nil values (which is
common!).

Also added a bunch of tests for these cases.

Fixes kr#77

Co-authored-by: Jordan Barrett <jordan.barrett@canonical.com>

* Bump github.com/rogpeppe/go-internal from 1.8.0 to 1.9.0 (kr#88)

This change bumps github.com/rogpeppe/go-internal from version 1.8.0 to 1.9.0.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix failing test

* bump go version to same as zk, and update workflow

* update go.sum

* update go.sum - again

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Matthieu MOREL <mmorel-35@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ben Hoyt <benhoyt@gmail.com>
Co-authored-by: Jordan Barrett <jordan.barrett@canonical.com>
Co-authored-by: tjex <tjex@tjex.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

PANIC=Format method: runtime error: invalid memory address or nil pointer dereference with go 1.17
2 participants