> I was thinking a proxy written in C++ could cause Geany to call it on a 
> subplugin? (but I don't know the details of proxy and geany interaction).

Probably not, because `geany_load_module()` is the builtin Geany API, a proxy 
plugin is likely to have it own, and even then, only one place should call that 
function inside plugins.

> As best I can tell its UB. […]

Yeah I'd imagine.  Though, I'm wondering what's worse: not checking signature 
at all, or requiring authors of C++ plugins to carefully not throw any 
exception (from inside a function that is highly unlikely to contain much C++ 
code)?  If really the author meant to add `noexcept`, she must then be aware of 
the problem and properly handle exceptions anyway, as IIUC all this is merely a 
runtime check that leads to program abortion.

An alternative solution could be something like this:
```C++
#ifdef __cplusplus /* >= 2011 */
gboolean geany_load_module(GeanyPlugin *plugin) noexcept;
#else
gboolean geany_load_module(GeanyPlugin *plugin);
#endif
```
So authors of C++ plugins are forced to consider the issue.  But that breaks 
C++ API.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/1215#issuecomment-244953219

Reply via email to