Commit graph

1,611 commits

Author SHA1 Message Date
Karl Wette
952eee8f59 Octave: drop support for Octave versions older than 3.2.0
- Latest non-supported version is 3.0.5, released 2009-04-09
- Earliest supported version is 3.2.0, released 2009-06-05
2014-10-04 19:40:52 +02:00
Oliver Buchtala
0a110e5138 Merge branch 'master' of https://github.com/swig/swig
Conflicts:
	CHANGES.current
2014-09-30 22:21:24 +02:00
Oliver Buchtala
08c8df5fdd Announced changes after merging #195 and #216. 2014-09-30 22:20:06 +02:00
Ian Lance Taylor
0d6cebc7c4 [Go] In configure script, require Go 1.1 or later. 2014-09-30 12:42:21 -07:00
William S Fulton
af1093d956 Add changes note for #207
[skip ci]
2014-09-30 20:37:14 +01:00
Oliver Buchtala
53d7fc8a16 Merge branch 'Richie765-master'
Conflicts:
	CHANGES.current
2014-09-30 18:46:25 +02:00
William S Fulton
f81042057b Add changes note for #208 - array_functions initialisation 2014-09-27 16:55:46 +01:00
William S Fulton
a9ff9ab2b9 Add changes note for #187 - Ruby data sharing fix 2014-09-27 15:14:14 +01:00
William S Fulton
d03ff2b262 Changes note for #168 - JNI leak fix 2014-09-27 14:48:13 +01: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
William S Fulton
15152596f2 Change file for #228 and #229 2014-09-17 22:19:07 +01: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
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
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
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
Olly Betts
f3a6c55929 [Python] Fix regression in indentation of python code produced with -modern,
introduced by changes in #188.  Reported by fabiencastan in #218.
2014-09-02 02:34:01 -03:00
Olly Betts
255c929c56 Issue an error for unknown SWIG preprocessor directives, rather
than quietly ignoring them.  Reported by jrhelsey in issue#217.
2014-09-01 00:26:15 -03:00
Richard
728f540038 Added work on Javascript V8 2014-08-28 19:46:52 -05:00
Robert Stone
488aed4224 apply SF Patch #350 and add testcase 2014-08-15 21:47:10 -07:00
William S Fulton
2b71c99feb Add C# license header changes for StyleCop to changes file 2014-08-04 19:44:47 +01:00
William S Fulton
db7514860d Add changes entry for NIOBUFFER Java typemaps 2014-08-04 19:27:30 +01:00
Ian Lance Taylor
287e84d84c [Go] Change struct definition to use void *, not uint8, so
that the type is recorded as possibly containing
pointers.  This ensures that the 1.3 garbage collector
does not collect pointers passed to C++ code.
2014-07-14 08:33:43 -07:00
William S Fulton
83749b3937 Fix expansion of the $parentclassname special variable
It incorrectly contains brackets in the expanded name.
Fixes SF Bug 1375.
2014-07-01 20:27:48 +01:00
William S Fulton
8728a97dc6 Bump version to 3.0.3 2014-06-06 19:56:38 +01:00
William S Fulton
37c09b0104 Add 3.0.2 release date 2014-06-04 08:48:04 +01:00
William S Fulton
acd0ebc660 changes file updates 2014-06-02 20:01:07 +01:00
William S Fulton
6d5444e587 CHANGES update 2014-06-02 07:23:14 +01:00
Karl Wette
ecf28da5a9 Octave: remove deprecated -global/-noglobal command-line arguments 2014-05-29 23:42:55 +02:00
William S Fulton
68347cb723 Bump version to 3.0.2 2014-05-28 18:51:46 +01:00
William S Fulton
85413bc84d Add 3.0.1 release date 2014-05-27 23:39:51 +01:00
William S Fulton
f03bff152c Python 3 byte string output: use errors="surrogateescape" change note 2014-05-27 23:31:31 +01:00
William S Fulton
d9cac66462 Add missing entries into changes files. 2014-05-21 20:04:48 +01:00
Karl Wette
66555ad2a7 Fix go configuration and SWIG_GCC_VERSION
- in configure.ac: modify sed expression to only look at first line of
  gccgo --version, extract the last numeric token, and remove periods;
  this parses e.g. "gccgo (Debian 4.7.2-5) 4.7.2"
- in goruntime.swg: fix typo in __GNUC_PATCHLEVEL__ (SF Bug #1298)
2014-05-02 21:44:52 +02:00
Karl Wette
b6c1889c08 Fix {python|perl5|ruby|tcl}/java examples
- in Lib/gcj/cni.i: remove JvAllocObject(), change
  JvCreateJavaVM() argument from void* to JvVMInitArgs*
- in Examples/{python|perl5|ruby|tcl}/java/Makefile:
  pass full class name to gcjh, add Example.h as dependency,
  do not override CXX for compiling C++ sources
- in Examples/python/java/example.i:
  add destructor to class to prevent memory loss complaint
2014-05-02 21:44:42 +02:00
Olly Betts
73bb909bae [PHP] The generated __isset() method now returns true for read-only properties. 2014-05-01 14:37:58 +12:00
William S Fulton
d7f6167e02 Remove duplicate declarations of strtoimax and strtoumax in inttypes.i 2014-04-08 23:47:22 +01:00
William S Fulton
dc8428889e Ignored enum fixes.
C#/Java - Enums which have been ignored via %ignore and are subsequently
used are handled slightly differently. Type wrapper classes are now generated
which are effectively a wrapper of an empty enum. Previously in Java uncompilable
code was generated and in C# an int was used.
2014-04-08 23:25:27 +01:00
William S Fulton
1d857beb9d Fix regression in 3.0.0 where legal code following an operator<< definition might give a syntax error.
SF Bug #1365.
2014-04-04 08:31:59 +01:00
Olly Betts
f563069e7b [PHP] Fix wrapping director constructors with default parameters with a ZTS-enabled build of PHP. 2014-04-03 10:38:19 +13:00
Olly Betts
2a3981289d [PHP] Pass the ZTS context we already have to avoid needing to
call TSRMLS_FETCH, which is relatively expensive.
2014-04-02 23:35:59 +13:00
Olly Betts
18c00e20bc [PHP] Pass ZTS context through to t_output_helper() so it works
with a ZTS-enabled build of PHP.  Reported by Pierre Labastie in
github PR#155.
2014-04-02 23:28:56 +13:00
William S Fulton
df2c9d366d Remove some useless code 2014-03-28 08:04:01 +00:00
William S Fulton
cd2085aae7 Fixes for C enums used in an API and the definition of the enum has not been parsed.
For D, this fixes a segfault in SWIG.

Java, C#, D, Go now produce code that compiles, although the definition of the
enum is needed in order to use the enum properly from the target language.
2014-03-28 07:54:03 +00:00
William S Fulton
7f8c1e192d CHANGES file for previous commit for Lua 2014-03-23 12:55:26 +00:00
William S Fulton
b0afd857e5 Bump version to 3.0.1 2014-03-17 06:54:00 +00:00
William S Fulton
08b783113d Add release date 2014-03-16 21:11:03 +00:00
William S Fulton
e1b649998b Add changes notes for Lua changes 2014-03-16 21:11:03 +00:00
William S Fulton
778aed5a08 CHANGES file updates 2014-03-16 21:11:03 +00:00