Commit graph

21,238 commits

Author SHA1 Message Date
Simon Marchetto
a2c2aaec80 scilab: fix test-suite (scripts were not executed) 2014-09-24 11:44:38 +02:00
Simon Marchetto
8e791562a4 scilab: rearrange some comments 2014-09-24 08:59:55 +02: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
William S Fulton
783e816d89 Testcase warning suppression 2014-09-23 19:54:13 +01:00
William S Fulton
15152596f2 Change file for #228 and #229 2014-09-17 22:19:07 +01:00
Richard Pastrick
11d07bb45b add bool array type to arrays_csharp.i [issue #228] 2014-09-17 22:17:36 +01:00
William S Fulton
fea2fc137e Suppress Octave failing the build
li_std_vector testcase causing g++ internal compiler error
2014-09-16 19:19:48 +01:00
William S Fulton
8128b1e12f For Android examples, replace hard coded tool names with those detected at configure time. 2014-09-15 19:44:18 +01:00
Simon Marchetto
c88292ad89 scilab: in builder.sce use absolute path for source files 2014-09-15 11:50:54 +02:00
Simon Marchetto
ef687d801e scilab: fix C++ examples cleaning 2014-09-15 10:22:42 +02:00
Ian Bell
3c16d8ed43 More clear description of buildverbositylevel 2014-09-15 02:00:07 +02:00
Ian Lance Taylor
39433f12e4 Fix one case where we test goout rather than has_goout. The effect
was to incorrect use a return statement before the goout typemap
code.
2014-09-12 17:46:21 -07:00
Olly Betts
1a99212c2c [PHP] Add support for specifying any PHP interfaces a wrapped class
implements, e.g.: %typemap("phpinterfaces") MyIterator "Iterator";
2014-09-12 12:48:37 -03:00
Simon Marchetto
d89f3bde90 scilab: fix Examples Makefile exit code 2014-09-12 12:04:40 +02: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
Olly Betts
fa94a29df4 Fix comment typo 2014-09-11 13:06:17 -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
2bcd768909 scilab: display loading errors in examples 2014-09-11 08:56:04 +02:00
Vadim Zeitlin
05b5ed11bc Add a possibility to flexibly ignore custom Doxygen tags.
Add %feature("doxygen:ignore:<command>") implementation, documentation and
test case.

This feature allows to use custom tags in C++ Doxygen comments for
C++-specific things that don't make sense in the context of the target
language and also allows to insert contents specific to the target language in
the C++ comments using (different) custom commands, which is very useful in
practice to explain the particularities of the API wrappers.
2014-09-11 01:39:42 +02:00
Ian Lance Taylor
06b1157470 Make sure to give all parameters a local before adding all the new
typemaps.

Also mark C functions compiled by 6c and friends as nosplit.
2014-09-10 16:17:54 -07:00
Vadim Zeitlin
cd1f4619d2 Stop completely ignoring many Doxygen comments.
For some reason, Doxygen comments such as @class or @enum were considered to
be "structural" (whatever this means) and completely removed during the
parsing time. This is wrong as such comments can be attached to their
corresponding declarations and while it would be arguably better to check that
this is indeed the case (e.g. "@class Foo" really appears before or after the
declaration of this class), throwing them away is definitely not the right
thing to do and keeping them without any further checks is a better alternative.
2014-09-10 21:55:41 +02:00
Vadim Zeitlin
dcdc5fb421 Fix structural Doxygen comment recognition in the parser.
The code wrongly recognized something like "@direction" as a structural "@dir"
comment (why is the latter structural is another question).

Add a check that we've really found the entire tag and not just a prefix of
some other tag.
2014-09-10 21:55:41 +02:00
Vadim Zeitlin
306d99f7d6 No changes, just make checking for Doxygen structural tags more sane.
Replace an if statement with 33 conditions in it with a table and a loop.
2014-09-10 21:55:41 +02:00
Vadim Zeitlin
846a90f8d7 Use "//", not "#", for comments in SWIG input.
One Doxygen test file used "#" for comments for some reason, this doesn't work
with the latest SWIG trunk where a lone "#" is considered to be an unknown
preprocessor directive.
2014-09-10 21:55:41 +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
Simon Marchetto
35b6732b3d scilab: fix wrong code in generated script builder.sce 2014-09-10 15:13:43 +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
Simon Marchetto
e107faf5cc scilab: remove error messages in example contract 2014-09-09 14:47:20 +02:00
Simon Marchetto
7cd7166991 scilab: remove example matrix2 warnings 2014-09-09 14:21:06 +02:00
Ian Lance Taylor
be145043df Add run test case for argout.i. 2014-09-07 15:44:12 -07:00
Ian Lance Taylor
1addbb46a8 [Go] Add imtype, goin, goout, godirectorin, and godirectorout
typemaps, to support writing Go code to convert between types.
2014-09-05 17:54:19 -07: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
Olly Betts
6eaec9ce7c Update expected output for pp_constant error test 2014-09-04 09:29:20 -03:00
Alexey Pelykh
afbb47dc8f Java/Fix: swig_connect_director used not-fully-qualified classname (proper) 2014-09-04 12:22:56 +03:00
Alexey Pelykh
8a69da7d82 Java/Fix: swig_connect_director used not-fully-qualified classname 2014-09-04 12:05:23 +03:00
Olly Betts
b9fe7b5f00 Disable case in pp_constant.i which never actually worked 2014-09-03 17:18:11 -03:00
William S Fulton
53aa3ec5fc Correct global variable name in Scilab wrappers 2014-09-03 20:07:51 +01:00
William S Fulton
ae6782ea34 Suppress testcase warning 2014-09-03 20:07:50 +01:00
Vadim Zeitlin
6629d93481 Allow upper case letters and digits in Doxygen words.
Although all standard Doxygen commands are composed from lower case letters
and some special symbols only, custom commands can include upper case letters
and digits too.

Also use a symbolic constant defined once instead of repeating the same set of
characters twice.
2014-09-03 17:28:23 +02:00