Commit graph

3,144 commits

Author SHA1 Message Date
William S Fulton
1fea434400 Merge branch 'lefticus-ruby_macos_static_data_conflicts'
* lefticus-ruby_macos_static_data_conflicts:
  Fix shared data problem on MacOS 10.9 with xcode 5.1
2014-09-27 15:12:04 +01:00
William S Fulton
0d34a0f0bf Merge branch 'pingany-director_local_jstring_leak'
* pingany-director_local_jstring_leak:
  Use more conventional naming for generated Java LocalRefGuard variables
  Make more use of LocalRefGuard in Java
  fixup! Patch of http://sourceforge.net/p/swig/mailman/message/29816385
  Patch of http://sourceforge.net/p/swig/mailman/message/29816385
2014-09-27 14:33:31 +01:00
William S Fulton
f4964f5fb3 Use more conventional naming for generated Java LocalRefGuard variables 2014-09-27 14:32:03 +01:00
William S Fulton
2f5bf397ae Make more use of LocalRefGuard in Java 2014-09-27 13:56:11 +01:00
Simon Marchetto
2bfb473b6f scilab: fix li_std_string_extra test, missing std_char_traits.i 2014-09-26 11:11:44 +02:00
Simon Marchetto
95c842a9c0 scilab: fix li_std_string_extra, missing lib std_basic_string.i 2014-09-26 09:03:09 +02:00
Ian Lance Taylor
4b64ce71a3 [Go] Adjust generated code to work with upcoming Go 1.4 release. 2014-09-25 12:10:11 -07:00
Thomas Maslach
de6b433cb1 Fix Python crash when using -threads iterating containers
Also fixes li_std_vector_enum testcase when run with -threads.

Patch supplied on swig-devel mailing list on 12 Sep with details...

==============================================
I just wanted to mention that I found a crash issue in bug..

I am using SWIG 2.0.11 with python and have –threads enabled.  I have a C++ std::vector that I instantiate in SWIG with %template.  I also have a method in a class that returns this vector.  I also include std_vector.i, btw..

When I iterate like so:

children = Action.getActionList()
for child in children:
  pass

Everything is fine..

When I iterate like this:

for child in Action.getActionList()
  pass

Product crashes.

The problem is the following.  This code gets called first:

SWIGINTERN PyObject *_wrap_delete_SwigPyIterator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
  PyObject *resultobj = 0;
  swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  PyObject * obj0 = 0 ;

  if(!PyArg_UnpackTuple(args,(char *)"delete_SwigPyIterator",1,1,&obj0)) SWIG_fail;
  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_DISOWN |  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_SwigPyIterator" "', argument " "1"" of type '" "swig::SwigPyIterator *""'");
  }
  arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1);
  {
    SWIG_PYTHON_THREAD_BEGIN_ALLOW;
    delete arg1;
    SWIG_PYTHON_THREAD_END_ALLOW;
  }
  resultobj = SWIG_Py_Void();
  return resultobj;
fail:
  return NULL;
}

Note the SWIG_PYTHON_THREAD_BEGIN_ALLOW/END_ALLOW. In between those two statements, we delete arg1.  That in turn will eventually end up in this code:

namespace swig {
  class SwigPtr_PyObject {
  protected:
    PyObject *_obj;

  public:
    … snip! …
    ~SwigPtr_PyObject()
    {
      Py_XDECREF(_obj);
    }

Uh-oh!  We call Py_XDECREF when we aren’t supposed to because we are in a SWIG_PYTHON_THREAD_BEGIN_ALLOW/END_ALLOW section!

This takes care of the issue:

namespace swig {
  class SwigPtr_PyObject {
  protected:
    PyObject *_obj;

  public:
    … snip! …
    ~SwigPtr_PyObject()
    {
      SWIG_PYTHON_THREAD_BEGIN_BLOCK;
      Py_XDECREF(_obj);
      SWIG_PYTHON_THREAD_END_BLOCK;
    }

There are several other methods in this class that use the Python API, but don’t have the BEGIN/END block defined.  I’m not sure if they are required for all of them, but I believe they are..

I have attached a modified pyclasses.swg with what I believe are the correct changes.  This code is from 2.0.11, but as far as I can tell, it’s the same as what is in 3.0.2…

Apologies for not doing more here (making/running tests, getting it in the code repository, etc..), but I’m under some pressure to get some unrelated things done…
2014-09-23 22:33:25 +01:00
Richard Pastrick
11d07bb45b add bool array type to arrays_csharp.i [issue #228] 2014-09-17 22:17:36 +01:00
Olly Betts
e12322df86 [PHP] Fix throwing a PHP exception through C++ from a subclassed
director method - PHP NULL gets returned by the subclassed method
in this case, so the directorout typemap needs to allow that (at
least if an exception is active).
2014-09-11 13:09:08 -03:00
Simon Marchetto
0567a9765d scilab: remove useless SWIG_Scilab_GetOutputPositionAndReset() 2014-09-11 14:53:28 +02:00
Simon Marchetto
f58be33005 scilab: rename function name management routines 2014-09-11 14:46:44 +02:00
Simon Marchetto
d8dd9e5484 scilab: fix li_std_vector test 2014-09-11 12:33:49 +02:00
Simon Marchetto
7289fa7e75 scilab: rename wrapper global variable fname to SwigFuncName 2014-09-11 12:14:11 +02:00
Simon Marchetto
4bb8c90101 Revert "scilab: remove useless SWIG_Scilab_SetOutput() second parameter"
This reverts commit 99c82bffa5.
2014-09-11 11:44:38 +02:00
Simon Marchetto
429af4052f Revert "scilab: fix compilation error (extra parenthesis)"
This reverts commit 7249cd6a97.
2014-09-11 11:44:15 +02:00
Simon Marchetto
c5cf834f3e Revert "scilab: fix compilation error (too many args in SWIG_Scilab_SetOutput)"
This reverts commit af822c640c.
2014-09-11 11:43:50 +02:00
Simon Marchetto
af822c640c scilab: fix compilation error (too many args in SWIG_Scilab_SetOutput) 2014-09-10 15:32:34 +02:00
Simon Marchetto
7249cd6a97 scilab: fix compilation error (extra parenthesis) 2014-09-10 15:26:14 +02:00
Ian Lance Taylor
acaaa0f31f [Go] Add goargout typemap. 2014-09-09 11:28:04 -07:00
Olly Betts
0dd7b61c57 Fix segmentation faults with directors in PHP >= 5.4 2014-09-09 13:39:30 -03:00
Richard
0dfc1b090f Fix duplicate symbol linker errors for Javascript/v8 2014-09-09 10:08:30 -03:00
Simon Marchetto
99c82bffa5 scilab: remove useless SWIG_Scilab_SetOutput() second parameter 2014-09-09 15:05:12 +02:00
William S Fulton
1f6b71b47b Scilab parameter name changes
Remove _ prefix in parameter names
2014-09-04 20:14:35 +01:00
William S Fulton
ffbaf424ca Fix previous commit.
li_std_vector testcase was failing. This needs diagnosing.
2014-09-04 20:14:35 +01:00
William S Fulton
53aa3ec5fc Correct global variable name in Scilab wrappers 2014-09-03 20:07:51 +01:00
Richard
911fd761b0 Minor improvements 2014-08-28 19:46:52 -05:00
Richard
b8d7cc21b9 Use macros for V8 items 2014-08-28 19:46:52 -05:00
Richard
408390d146 Fixes for v8 3.18.3 (0x031803) 2014-08-28 19:46:51 -05:00
Richard
6fee208010 Fixes for v8 3.19.2 (0x031902) 2014-08-28 19:46:51 -05:00
Richard
eeb4b5497e Fixes for v8 3.24.17 (0x032417) 2014-08-28 19:46:51 -05:00
Richard
ee88602fde Use full name 2014-08-28 19:46:51 -05:00
Richard
dea3144726 Fixes for V8 3.22.24 (0x032224) Some errors left (??) 2014-08-28 19:46:51 -05:00
Richard
fee5748499 Fixes for 3.23.18 (0x032318) 2014-08-28 19:46:51 -05:00
Richard
d4920591d4 Fixes for v8 3.24.3 (0x032403) 2014-08-28 19:46:51 -05:00
Richard
c1222ebeec Partial fixes for 3.24.40 (0x032440) - incomplete 2014-08-28 19:46:50 -05:00
Richard
3c9e16ef85 Fixed some bugs from previous commit 2014-08-28 19:46:50 -05:00
Richard
e0c0670540 Partially fixed for 3.25.30 (0x032530) - unfinished 2014-08-28 19:46:50 -05:00
Richard
e98a659246 Fixes for v8 3.21.17 (0x032117) 2014-08-28 19:46:50 -05:00
Richard
3d63f9113b Fixes for v8 3.19.18 (0x031918) 2014-08-28 19:46:50 -05:00
Richard
013fb3d22d Fixes for v8 3.19.2 (0x031902) 2014-08-28 19:46:50 -05:00
Richard
8829230641 Fixes for v8 3.17.10 (0x031710) 2014-08-28 19:46:49 -05:00
Richard
47cbf621be Fixes for v8 3.15.11 (0x031511) 2014-08-28 19:46:49 -05:00
Pingan Yi
f38f6371a3 fixup! Patch of http://sourceforge.net/p/swig/mailman/message/29816385 2014-08-13 16:14:57 +08:00
Benoit Sigoure
16549a36e3 Initialize C++ arrays created by array_functions' new_foo().
`array_functions(TYPE, NAME)' generates a `new_foo(size)' function that
allocates a new array of the given type.  When compiling in C, the array
is initialized with `calloc()', which shows that the intent was to have
the array be zero-initialized.  When in C++, however, the array was not
getting initialized, so it could contain random garbage after creation,
when the type was a POD type.

This change makes `new_foo(size)' create a value-initialized array when
in C++, as per the C++ standard's 5.3.4.15 that says that adding a pair
of parentheses at the end of a new-expression does that.
2014-08-12 23:44:50 -07:00
Kris Thielemans
f6b10f299f small suggestions for changes in std_ios.i
Hi

Would it be possible to add the following 2 typedefs to std_ios.i?

 typedef basic_ios<char> ios;
 typedef basic_ios<wchar_t> wios;

at present, it contains only

 %template(ios) basic_ios<char>;
 %template(wios) basic_ios<wchar_t>;

This means however that things like std::ios::openmode are currently not
recognised by SWIG. With the above typedefs, they are. Similar typedefs
should probably be added in std_iostream.i for ostream etc.

Also, while checking std_ios.i, it seems that the definition of basic_ios
has a copy-paste error in the private section (the constructor is still as
ios_base). To avoid confusion, I suggest to change that. Below is a diff
with the suggested changes.

Kris
2014-08-12 23:45:02 +01:00
Timothee Cour
2b2260e996 _ 2014-08-12 09:11:10 -07:00
Simon Marchetto
29f45d91ad scilab: apply K&R coding style for typemaps 2014-08-12 17:31:47 +02:00
Simon Marchetto
460e737df1 scilab: use SWIG_Scilab_Raise() for exceptions 2014-08-08 16:30:00 +02:00
Simon Marchetto
caeaf7dc7e scilab: macro SWIG_SCILAB_ERROR (value 999 by default) for SWIG errors 2014-08-08 16:23:24 +02:00