Hacker News new | ask | show | jobs
by aragilar 610 days ago
And apparently worked the last 28 or so years on loads of other machines (I think the question would be where doesn't curl run)?
2 comments

Casting function pointers like this can break Emscripten [1]. In libxml2, I fixed all these issues 7 years ago. It can be painful, but "it worked for 28 years" is not an excuse.

[1] https://emscripten.org/docs/porting/guidelines/function_poin...

I believe AIX C++ name mangling includes function argument type information (with CV qualifiers!) so this is a real-world case where this does actually break. I suspect curl does not compile with the C++ compiler though.
So does the Itanium ABI (which is what most people would think of as the normal/standard/usual C++ ABI):

  $ c++filt
  _Z1fPFvPcE
  f(void (*)(char*))
But I'm struggling to understand how this would cause things to break.
I guess only if you directly expose C++ APIs in DLLs, which is a bad idea anyway.