Source: luabind
Version: 0.9.1+git20150823+dfsg-3
Severity: important
Tags: patch upstream

Dear Maintainer,

the upstream snapshot (76d4061) fixes some instances of std::terminate being 
called when luabind::error is thrown
in a destructor by utilizing a macro that evaluates to noexcept(false). 
Unfortunately, it seems one of those
instances has not been fixed.

In luabind/detail/call_member.hpp:233 LUABIND_MAY_THROW needs to be
attached to ~proxy_member_void_caller() to fix this bug.

I have also reported this issue to the upstream source:
https://github.com/ValyriaTear/luabind/pull/2

For your convenience I will attach a patch.


Kind regards,
Andreas Grob


-- System Information:
Debian Release: bullseye/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.5.0-2-amd64 (SMP w/6 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), 
LANGUAGE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Author: Andreas Grob <vilar...@illarion.org>
Description: Prevent std::terminate in ~proxy_member_void_caller()

If luabind::error is thrown in ~proxy_member_void_caller() std::terminate will 
be called, unless we set noexcept(false).

This should complement the fix made in upstream commit 94fedc6.

I have also suggested this fix in upstream at 
https://github.com/ValyriaTear/luabind/pull/2

Index: luabind-0.9.1+git20150823+dfsg/luabind/detail/call_member.hpp
===================================================================
--- luabind-0.9.1+git20150823+dfsg.orig/luabind/detail/call_member.hpp
+++ luabind-0.9.1+git20150823+dfsg/luabind/detail/call_member.hpp
@@ -230,7 +230,7 @@ namespace luabind
                     rhs.m_called = true;
                 }

-                ~proxy_member_void_caller()
+                ~proxy_member_void_caller() LUABIND_MAY_THROW
                 {
                     if (m_called) return;

Reply via email to