Skip to content

Comment on UndefinedBehaviorSanitizer's Unexpected Behaviorparent

Comments

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)?

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.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.