Public bug reported:

Binary package hint: swig1.3

Package: 1.3.33-2ubuntu1 (Ubuntu hardy)
Target language: Python

Swig provides the option -nortti to be used in conjunction with C++
code, which is compiled with -fno-rtti. This takes effect only if
"directors" are used. It defines SWIG_DIRECTOR_NORTTI.

>From the swig source code (Source/Modules/python.cxx):

#ifdef SWIG_DIRECTOR_NORTTI
/* 
   When we don't use the native C++ RTTI, we implement a minimal one
   only for Directors.
*/

[...]

# define SWIG_DIRECTOR_CAST(Arg) Swig::get_rtdir(static_cast<void*>(Arg))
# define SWIG_DIRECTOR_RGTR(Arg1, Arg2) 
Swig::set_rtdir(static_cast<void*>(Arg1), Arg2)

#else

# define SWIG_DIRECTOR_CAST(Arg) dynamic_cast<Swig::Director*>(Arg)
# define SWIG_DIRECTOR_RGTR(Arg1, Arg2)

#endif /* SWIG_DIRECTOR_NORTTI */

The reason is that dynamic_cast<> must not be used with -fno-rtti.
However, swig doesn't use the preprocessor macro defined above in one
case, namely in Language::classDirectorDisown() (file:
Source/Modules/lang.cxx).

You can work around this problem by applying the attached patch to swig,
probably breaking other target languages.

** Affects: swig1.3 (Ubuntu)
     Importance: Undecided
         Status: New

-- 
swig generated code can not be compiled when option -nortti is used and 
%feature("director") is enabled for a c++ class
https://bugs.launchpad.net/bugs/210898
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to