Freeing s that has been advanced is a bit strange though. Pass the point to hunspell_suggests_free as you have gotten it. Make a copy to iterate.
I noticed this as well (hence why used an iterator in the example i showed) but using OP's snippet didn't caused any issues for me either and produced the same results as my snippet did.
Still, it is (like you said) wrong to do.
I suspect OP is using the Delphi wrapper found in the hunspell archives but as long as i can't be sure, there is no way of telling what goes wrong

I don't quite understand the use of WideChar pointers in another snippet OP showed, perhaps that can cause issues ?