I believe I’ve discovered the actual cause for this. I had been experiencing the same issue here while using the widget when submitting the form from the homepage (when the Front Page is set) and from individual posts (pages, categories, etc all worked fine). The URL would display correctly but the content would be the Posts Page.
After some digging, I discovered that “name” is considered to be one of WordPress’ reserved query variables. The anti-spam uses a honeypot that is “name” which gets sent when the form is submitted. WordPress then takes that variable and tries to find a post with that name (or slug) and since it is empty, it returns the Posts Page.
It likely only breaks these pages because other WordPress variables likely take priority over the “name”. You can test this out by trying to navigate to a URL on your site such as https://www.homepage.com/the-post-slug/?name=different-page-or-post-slug and the page will likely display or redirect to the different page.
Here’s also a list of WordPress query variables where you can see “name” existing in the public variables. https://codex.www.ads-software.com/WordPress_Query_Vars
The quick solution without modifying the code for anyone experiencing this would be to “Disable Anti-spam measures” in the widget or add ‘noantispam=”true”‘ if using the shortcode.