You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pylucene-commits@lucene.apache.org by va...@apache.org on 2018/10/15 00:48:50 UTC

svn commit: r1843871 - in /lucene/pylucene/trunk/jcc: CHANGES jcc2/sources/jcc.cpp jcc3/python.py jcc3/sources/JArray.cpp jcc3/sources/jcc.cpp

Author: vajda
Date: Mon Oct 15 00:48:50 2018
New Revision: 1843871

URL: http://svn.apache.org/viewvc?rev=1843871&view=rev
Log:
 - fixed bug PYLUCENE-41

Modified:
    lucene/pylucene/trunk/jcc/CHANGES
    lucene/pylucene/trunk/jcc/jcc2/sources/jcc.cpp
    lucene/pylucene/trunk/jcc/jcc3/python.py
    lucene/pylucene/trunk/jcc/jcc3/sources/JArray.cpp
    lucene/pylucene/trunk/jcc/jcc3/sources/jcc.cpp

Modified: lucene/pylucene/trunk/jcc/CHANGES
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/CHANGES?rev=1843871&r1=1843870&r2=1843871&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/CHANGES (original)
+++ lucene/pylucene/trunk/jcc/CHANGES Mon Oct 15 00:48:50 2018
@@ -1,6 +1,7 @@
 Version 3.2 ->
 --------------
  - fixed bug PYLUCENE-43
+ - fixed bug PYLUCENE-41
  - 
 
 Version 3.1 -> 3.2

Modified: lucene/pylucene/trunk/jcc/jcc2/sources/jcc.cpp
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc2/sources/jcc.cpp?rev=1843871&r1=1843870&r2=1843871&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc2/sources/jcc.cpp (original)
+++ lucene/pylucene/trunk/jcc/jcc2/sources/jcc.cpp Mon Oct 15 00:48:50 2018
@@ -131,7 +131,7 @@ static void t_jccenv_dealloc(t_jccenv *s
 
 static void add_option(char *name, char *value, JavaVMOption *option)
 {
-    char *buf = new char[strlen(name) + strlen(value) + 1];
+  char *buf = (char *) malloc(strlen(name) + strlen(value) + 1);
 
     sprintf(buf, "%s%s", name, value);
     option->optionString = buf;
@@ -145,7 +145,7 @@ static void add_paths(char *name, char *
 #else
     char pathsep = ':';
 #endif
-    char *buf = new char[strlen(name) + strlen(p0) + strlen(p1) + 4];
+    char *buf = (char *) malloc(strlen(name) + strlen(p0) + strlen(p1) + 4);
 
     sprintf(buf, "%s%s%c%s", name, p0, pathsep, p1);
     option->optionString = buf;
@@ -461,7 +461,7 @@ _DLL_EXPORT PyObject *initVM(PyObject *s
                 {
                     free(buf);
                     for (unsigned int i = 0; i < nOptions; i++)
-                        delete vm_options[i].optionString;
+                        free(vm_options[i].optionString);
                     PyErr_Format(PyExc_ValueError,
                                  "Too many options (> %d)", nOptions);
                     return NULL;
@@ -489,7 +489,7 @@ _DLL_EXPORT PyObject *initVM(PyObject *s
                     else
                     {
                         for (unsigned int j = 0; j < nOptions; j++)
-                            delete vm_options[j].optionString;
+                            free(vm_options[j].optionString);
                         PyErr_Format(PyExc_ValueError,
                                      "Too many options (> %d)", nOptions);
                         Py_DECREF(fast);
@@ -499,7 +499,7 @@ _DLL_EXPORT PyObject *initVM(PyObject *s
                 else
                 {
                     for (unsigned int j = 0; j < nOptions; j++)
-                        delete vm_options[j].optionString;
+                        free(vm_options[j].optionString);
                     PyErr_Format(PyExc_TypeError,
                                  "vmargs arg %d is not a string", i);
                     Py_DECREF(fast);
@@ -526,7 +526,7 @@ _DLL_EXPORT PyObject *initVM(PyObject *s
         if (JNI_CreateJavaVM(&vm, (void **) &vm_env, &vm_args) < 0)
         {
             for (unsigned int i = 0; i < nOptions; i++)
-                delete vm_options[i].optionString;
+                free(vm_options[i].optionString);
 
             PyErr_Format(PyExc_ValueError,
                          "An error occurred while creating Java VM");
@@ -536,7 +536,7 @@ _DLL_EXPORT PyObject *initVM(PyObject *s
         env->set_vm(vm, vm_env);
 
         for (unsigned int i = 0; i < nOptions; i++)
-            delete vm_options[i].optionString;
+            free(vm_options[i].optionString);
 
         t_jccenv *jccenv = (t_jccenv *) PY_TYPE(JCCEnv).tp_alloc(&PY_TYPE(JCCEnv), 0);
         jccenv->env = env;

Modified: lucene/pylucene/trunk/jcc/jcc3/python.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc3/python.py?rev=1843871&r1=1843870&r2=1843871&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc3/python.py (original)
+++ lucene/pylucene/trunk/jcc/jcc3/python.py Mon Oct 15 00:48:50 2018
@@ -1580,8 +1580,8 @@ def module(out, allInOne, classes, impor
     line(out, 2, 'INSTALL_STATIC_TYPE(ConstVariableDescriptor, module);')
     line(out, 2, 'INSTALL_STATIC_TYPE(FinalizerClass, module);')
     line(out, 2, 'INSTALL_STATIC_TYPE(FinalizerProxy, module);')
-    line(out, 2, '_install_jarray(module);')
     line(out, 2, '__install__(module);')
+    line(out, 2, '_install_jarray(module);')
     line(out)
     line(out, 2, 'return module;')
     line(out, 1, '}')

Modified: lucene/pylucene/trunk/jcc/jcc3/sources/JArray.cpp
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc3/sources/JArray.cpp?rev=1843871&r1=1843870&r2=1843871&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc3/sources/JArray.cpp (original)
+++ lucene/pylucene/trunk/jcc/jcc3/sources/JArray.cpp Mon Oct 15 00:48:50 2018
@@ -469,6 +469,23 @@ static int map_ass_subscript(U *self, Py
 }
 
 
+static PyObject *t_JArray_jbyte__get_string_(t_JArray<jbyte> *self, void *data)
+{
+    return self->array.to_string_();
+}
+
+static PyObject *t_JArray_jbyte__get_bytes_(t_JArray<jbyte> *self, void *data)
+{
+    return self->array.to_bytes_();
+}
+
+static PyGetSetDef t_JArray_jbyte__fields[] = {
+  { "string_", (getter) t_JArray_jbyte__get_string_, NULL, "", NULL },
+  { "bytes_", (getter) t_JArray_jbyte__get_bytes_, NULL, "", NULL },
+  { NULL, NULL, NULL, NULL, NULL }
+};
+
+
 template<typename T>
 static jclass initializeClass(bool getOnly)
 {
@@ -553,9 +570,7 @@ static PyObject *assignable_(PyTypeObjec
 
 template< typename T, typename U = _t_JArray<T> > class jarray_type {
 public:
-    PySequenceMethods seq_methods;
-    PyMappingMethods map_methods;
-    PyTypeObject type_object;
+    PyTypeObject *type_object;
 
     class iterator_type {
     public:
@@ -594,17 +609,76 @@ public:
     void install(char *name, char *type_name, char *iterator_name,
                  PyObject *module)
     {
-        type_object.tp_name = name;
+        PyMethodDef methods[] = {
+            { "cast_",
+              (PyCFunction) (PyObject *(*)(PyTypeObject *,
+                                           PyObject *, PyObject *))
+              cast_<T>,
+              METH_VARARGS | METH_CLASS, NULL },
+            { "instance_",
+              (PyCFunction) (PyObject *(*)(PyTypeObject *,
+                                           PyObject *, PyObject *))
+              instance_<T>,
+              METH_VARARGS | METH_CLASS, NULL },
+            { "assignable_",
+              (PyCFunction) (PyObject *(*)(PyTypeObject *,
+                                           PyObject *, PyObject *))
+              assignable_<T>,
+              METH_VARARGS | METH_CLASS, NULL },
+            { NULL, NULL, 0, NULL }
+        };
+
+        PyType_Slot slots[] = {
+            { Py_tp_dealloc, (void *) dealloc<T,U> },
+            { Py_tp_repr, (void *) repr<U> },
+            { Py_sq_length, (void *) seq_length<U> },
+            { Py_sq_concat, (void *) seq_concat<U> },
+            { Py_sq_repeat, (void *) seq_repeat<U> },
+            { Py_sq_item, (void *) seq_get<U> },
+            { Py_sq_ass_item, (void *) seq_set<U> },
+            { Py_sq_contains, (void *) seq_contains<U> },
+            { Py_mp_length, (void *) seq_length<U> },
+            { Py_mp_subscript, (void *) map_subscript<U> },
+            { Py_mp_ass_subscript, (void *) map_ass_subscript<U> },
+            { Py_tp_str, (void *) str<U> },
+            { Py_tp_doc, (void *) "JArray<T> wrapper type" },
+            { Py_tp_richcompare, (void *) richcompare<U> },
+            { Py_tp_iter, (void *) iter<U> },
+            { Py_tp_methods, methods },
+            { Py_tp_init, (void *) init<T,U> },
+            { Py_tp_new, (void *) _new },
+            { 0, NULL },  // to patch in byte[].string_ and bytes_
+            { 0, NULL }
+        };
+
+        if (!strcmp(type_name, "byte"))
+        {
+            slots[(sizeof(slots) / sizeof(PyType_Slot)) - 2] = {
+                Py_tp_getset, (void *) t_JArray_jbyte__fields
+            };
+        }
+
+        PyType_Spec spec = {
+            name, 
+            sizeof(U),
+            0,
+            Py_TPFLAGS_DEFAULT,
+            slots
+        };
 
-        if (PyType_Ready(&type_object) == 0)
+        PyObject *bases = PyTuple_Pack(1, PY_TYPE(Object));
+
+        type_object = (PyTypeObject*) PyType_FromSpecWithBases(&spec, bases);
+        Py_DECREF(bases);
+
+        if (type_object != NULL)
         {
-            Py_INCREF((PyObject *) &type_object);
-            PyDict_SetItemString(type_object.tp_dict, "class_",
+            PyDict_SetItemString(type_object->tp_dict, "class_",
                                  make_descriptor(initializeClass<T>));
-            PyDict_SetItemString(type_object.tp_dict, "wrapfn_",
+            PyDict_SetItemString(type_object->tp_dict, "wrapfn_",
                                  make_descriptor(wrapfn_<T>));
 
-            PyModule_AddObject(module, name, (PyObject *) &type_object);
+            PyModule_AddObject(module, name, (PyObject *) type_object);
         }
 
         U::format = PyUnicode_FromFormat("JArray<%s>%%s", type_name);
@@ -620,75 +694,6 @@ public:
 
         return (PyObject *) self;
     }
-
-    jarray_type()
-    {
-        memset(&seq_methods, 0, sizeof(seq_methods));
-        memset(&map_methods, 0, sizeof(map_methods));
-        memset(&type_object, 0, sizeof(type_object));
-
-        static PyMethodDef methods[] = {
-            { "cast_",
-              (PyCFunction) (PyObject *(*)(PyTypeObject *,
-                                           PyObject *, PyObject *))
-              cast_<T>,
-              METH_VARARGS | METH_CLASS, NULL },
-            { "instance_",
-              (PyCFunction) (PyObject *(*)(PyTypeObject *,
-                                           PyObject *, PyObject *))
-              instance_<T>,
-              METH_VARARGS | METH_CLASS, NULL },
-            { "assignable_",
-              (PyCFunction) (PyObject *(*)(PyTypeObject *,
-                                           PyObject *, PyObject *))
-              assignable_<T>,
-              METH_VARARGS | METH_CLASS, NULL },
-            { NULL, NULL, 0, NULL }
-        };
-
-        seq_methods.sq_length =
-            (lenfunc) (Py_ssize_t (*)(U *)) seq_length<U>;
-        seq_methods.sq_concat =
-            (binaryfunc) (PyObject *(*)(U *, PyObject *)) seq_concat<U>;
-        seq_methods.sq_repeat =
-            (ssizeargfunc) (PyObject *(*)(U *, Py_ssize_t)) seq_repeat<U>;
-        seq_methods.sq_item =
-            (ssizeargfunc) (PyObject *(*)(U *, Py_ssize_t)) seq_get<U>;
-        seq_methods.was_sq_slice = NULL;
-        seq_methods.sq_ass_item =
-            (ssizeobjargproc) (int (*)(U *, Py_ssize_t, PyObject *)) seq_set<U>;
-        seq_methods.was_sq_ass_slice = NULL;
-        seq_methods.sq_contains =
-            (objobjproc) (int (*)(U *, PyObject *)) seq_contains<U>;
-        seq_methods.sq_inplace_concat = NULL;
-        seq_methods.sq_inplace_repeat = NULL;
-
-        map_methods.mp_length =
-            (lenfunc) (Py_ssize_t (*)(U *)) seq_length<U>;
-        map_methods.mp_subscript =
-            (binaryfunc) (PyObject *(*)(U *, PyObject *)) map_subscript<U>;
-        map_methods.mp_ass_subscript =
-            (objobjargproc) (int (*)(U *, PyObject *,
-                                     PyObject *)) map_ass_subscript<U>;
-
-        Py_REFCNT(&type_object) = 1;
-        type_object.tp_basicsize = sizeof(U);
-        type_object.tp_dealloc = (destructor) (void (*)(U *)) dealloc<T,U>;
-        type_object.tp_repr = (reprfunc) (PyObject *(*)(U *)) repr<U>;
-        type_object.tp_as_sequence = &seq_methods;
-        type_object.tp_as_mapping = &map_methods;
-        type_object.tp_str = (reprfunc) (PyObject *(*)(U *)) str<U>;
-        type_object.tp_flags = Py_TPFLAGS_DEFAULT;
-        type_object.tp_doc = "JArray<T> wrapper type";
-        type_object.tp_richcompare =
-            (richcmpfunc) (PyObject *(*)(U *, PyObject *, int)) richcompare<U>;
-        type_object.tp_iter = (getiterfunc) (PyObject *(*)(U *)) iter<U>;
-        type_object.tp_methods = methods;
-        type_object.tp_base = PY_TYPE(Object);
-        type_object.tp_init =
-            (initproc) (int (*)(U *, PyObject *, PyObject *)) init<T,U>;
-        type_object.tp_new = (newfunc) _new;
-    }
 };
 
 template<typename T> class _t_jobjectarray : public _t_JArray<T> {
@@ -1017,7 +1022,7 @@ PyObject *JArray<jobject>::wrap(PyObject
     if (this$ != NULL)
     {
         _t_jobjectarray<jobject> *obj =
-            PyObject_New(_t_jobjectarray<jobject>, &jarray_jobject.type_object);
+            PyObject_New(_t_jobjectarray<jobject>, jarray_jobject.type_object);
 
         memset((void *) &(obj->array), 0, sizeof(JArray<jobject>));
         obj->array = *this;
@@ -1034,7 +1039,7 @@ PyObject *JArray<jstring>::wrap() const
     if (this$ != NULL)
     {
         _t_JArray<jstring> *obj =
-            PyObject_New(_t_JArray<jstring>, &jarray_jstring.type_object);
+            PyObject_New(_t_JArray<jstring>, jarray_jstring.type_object);
 
         memset((void *) &(obj->array), 0, sizeof(JArray<jstring>));
         obj->array = *this;
@@ -1050,7 +1055,7 @@ PyObject *JArray<jboolean>::wrap() const
     if (this$ != NULL)
     {
         _t_JArray<jboolean> *obj =
-            PyObject_New(_t_JArray<jboolean>, &jarray_jboolean.type_object);
+            PyObject_New(_t_JArray<jboolean>, jarray_jboolean.type_object);
 
         memset((void *) &(obj->array), 0, sizeof(JArray<jboolean>));
         obj->array = *this;
@@ -1066,7 +1071,7 @@ PyObject *JArray<jbyte>::wrap() const
     if (this$ != NULL)
     {
         _t_JArray<jbyte> *obj =
-            PyObject_New(_t_JArray<jbyte>, &jarray_jbyte.type_object);
+            PyObject_New(_t_JArray<jbyte>, jarray_jbyte.type_object);
 
         memset((void *) &(obj->array), 0, sizeof(JArray<jbyte>));
         obj->array = *this;
@@ -1082,7 +1087,7 @@ PyObject *JArray<jchar>::wrap() const
     if (this$ != NULL)
     {
         _t_JArray<jchar> *obj =
-            PyObject_New(_t_JArray<jchar>, &jarray_jchar.type_object);
+            PyObject_New(_t_JArray<jchar>, jarray_jchar.type_object);
 
         memset((void *) &(obj->array), 0, sizeof(JArray<jchar>));
         obj->array = *this;
@@ -1098,7 +1103,7 @@ PyObject *JArray<jdouble>::wrap() const
     if (this$ != NULL)
     {
         _t_JArray<jdouble> *obj =
-            PyObject_New(_t_JArray<jdouble>, &jarray_jdouble.type_object);
+            PyObject_New(_t_JArray<jdouble>, jarray_jdouble.type_object);
 
         memset((void *) &(obj->array), 0, sizeof(JArray<jdouble>));
         obj->array = *this;
@@ -1114,7 +1119,7 @@ PyObject *JArray<jfloat>::wrap() const
     if (this$ != NULL)
     {
         _t_JArray<jfloat> *obj =
-            PyObject_New(_t_JArray<jfloat>, &jarray_jfloat.type_object);
+            PyObject_New(_t_JArray<jfloat>, jarray_jfloat.type_object);
 
         memset((void *) &(obj->array), 0, sizeof(JArray<jfloat>));
         obj->array = *this;
@@ -1130,7 +1135,7 @@ PyObject *JArray<jint>::wrap() const
     if (this$ != NULL)
     {
         _t_JArray<jint> *obj =
-            PyObject_New(_t_JArray<jint>, &jarray_jint.type_object);
+            PyObject_New(_t_JArray<jint>, jarray_jint.type_object);
 
         memset((void *) &(obj->array), 0, sizeof(JArray<jint>));
         obj->array = *this;
@@ -1146,7 +1151,7 @@ PyObject *JArray<jlong>::wrap() const
     if (this$ != NULL)
     {
         _t_JArray<jlong> *obj =
-            PyObject_New(_t_JArray<jlong>, &jarray_jlong.type_object);
+            PyObject_New(_t_JArray<jlong>, jarray_jlong.type_object);
 
         memset((void *) &(obj->array), 0, sizeof(JArray<jlong>));
         obj->array = *this;
@@ -1162,7 +1167,7 @@ PyObject *JArray<jshort>::wrap() const
     if (this$ != NULL)
     {
         _t_JArray<jshort> *obj =
-            PyObject_New(_t_JArray<jshort>, &jarray_jshort.type_object);
+            PyObject_New(_t_JArray<jshort>, jarray_jshort.type_object);
 
         memset((void *) &(obj->array), 0, sizeof(JArray<jshort>));
         obj->array = *this;
@@ -1214,25 +1219,25 @@ PyObject *JArray_Type(PyObject *self, Py
     }
 
     if (!strcmp(name, "object"))
-        type = (PyObject *) &jarray_jobject.type_object;
+        type = (PyObject *) jarray_jobject.type_object;
     else if (!strcmp(name, "string"))
-        type = (PyObject *) &jarray_jstring.type_object;
+        type = (PyObject *) jarray_jstring.type_object;
     else if (!strcmp(name, "bool"))
-        type = (PyObject *) &jarray_jboolean.type_object;
+        type = (PyObject *) jarray_jboolean.type_object;
     else if (!strcmp(name, "byte"))
-        type = (PyObject *) &jarray_jbyte.type_object;
+        type = (PyObject *) jarray_jbyte.type_object;
     else if (!strcmp(name, "char"))
-        type = (PyObject *) &jarray_jchar.type_object;
+        type = (PyObject *) jarray_jchar.type_object;
     else if (!strcmp(name, "double"))
-        type = (PyObject *) &jarray_jdouble.type_object;
+        type = (PyObject *) jarray_jdouble.type_object;
     else if (!strcmp(name, "float"))
-        type = (PyObject *) &jarray_jfloat.type_object;
+        type = (PyObject *) jarray_jfloat.type_object;
     else if (!strcmp(name, "int"))
-        type = (PyObject *) &jarray_jint.type_object;
+        type = (PyObject *) jarray_jint.type_object;
     else if (!strcmp(name, "long"))
-        type = (PyObject *) &jarray_jlong.type_object;
+        type = (PyObject *) jarray_jlong.type_object;
     else if (!strcmp(name, "short"))
-        type = (PyObject *) &jarray_jshort.type_object;
+        type = (PyObject *) jarray_jshort.type_object;
     else
     {
         PyErr_SetObject(PyExc_ValueError, arg);
@@ -1247,23 +1252,6 @@ PyObject *JArray_Type(PyObject *self, Py
     return type;
 }
 
-static PyObject *t_JArray_jbyte__get_string_(t_JArray<jbyte> *self, void *data)
-{
-    return self->array.to_string_();
-}
-
-static PyObject *t_JArray_jbyte__get_bytes_(t_JArray<jbyte> *self, void *data)
-{
-     return self->array.to_bytes_();
-}
-
-static PyGetSetDef t_JArray_jbyte__fields[] = {
-    { "string_", (getter) t_JArray_jbyte__get_string_, NULL, "", NULL },
-    { "bytes_", (getter) t_JArray_jbyte__get_bytes_, NULL, "", NULL },
-    { NULL, NULL, NULL, NULL, NULL }
-};
-
-
 PyTypeObject *PY_TYPE(JArrayObject);
 PyTypeObject *PY_TYPE(JArrayString);
 PyTypeObject *PY_TYPE(JArrayBool);
@@ -1280,44 +1268,43 @@ void _install_jarray(PyObject *module)
 {
     jarray_jobject.install("JArray_object", "object",
                             "__JArray_object_iterator", module);
-    PY_TYPE(JArrayObject) = &jarray_jobject.type_object;
+    PY_TYPE(JArrayObject) = jarray_jobject.type_object;
 
     jarray_jstring.install("JArray_string", "string",
                             "__JArray_string_iterator", module);
-    PY_TYPE(JArrayString) = &jarray_jstring.type_object;
+    PY_TYPE(JArrayString) = jarray_jstring.type_object;
 
     jarray_jboolean.install("JArray_bool", "bool",
                             "__JArray_bool_iterator", module);
-    PY_TYPE(JArrayBool) = &jarray_jboolean.type_object;
+    PY_TYPE(JArrayBool) = jarray_jboolean.type_object;
 
-    jarray_jbyte.type_object.tp_getset = t_JArray_jbyte__fields;
     jarray_jbyte.install("JArray_byte", "byte",
                          "__JArray_byte_iterator", module);
-    PY_TYPE(JArrayByte) = &jarray_jbyte.type_object;
+    PY_TYPE(JArrayByte) = jarray_jbyte.type_object;
 
     jarray_jchar.install("JArray_char", "char",
                          "__JArray_char_iterator", module);
-    PY_TYPE(JArrayChar) = &jarray_jchar.type_object;
+    PY_TYPE(JArrayChar) = jarray_jchar.type_object;
 
     jarray_jdouble.install("JArray_double", "double",
                            "__JArray_double_iterator", module);
-    PY_TYPE(JArrayDouble) = &jarray_jdouble.type_object;
+    PY_TYPE(JArrayDouble) = jarray_jdouble.type_object;
 
     jarray_jfloat.install("JArray_float", "float",
                           "__JArray_float_iterator", module);
-    PY_TYPE(JArrayFloat) = &jarray_jfloat.type_object;
+    PY_TYPE(JArrayFloat) = jarray_jfloat.type_object;
 
     jarray_jint.install("JArray_int", "int",
                         "__JArray_int_iterator", module);
-    PY_TYPE(JArrayInt) = &jarray_jint.type_object;
+    PY_TYPE(JArrayInt) = jarray_jint.type_object;
 
     jarray_jlong.install("JArray_long", "long",
                          "__JArray_long_iterator", module);
-    PY_TYPE(JArrayLong) = &jarray_jlong.type_object;
+    PY_TYPE(JArrayLong) = jarray_jlong.type_object;
 
     jarray_jshort.install("JArray_short", "short",
                           "__JArray_short_iterator", module);
-    PY_TYPE(JArrayShort) = &jarray_jshort.type_object;
+    PY_TYPE(JArrayShort) = jarray_jshort.type_object;
 }
 
 #endif /* PYTHON */

Modified: lucene/pylucene/trunk/jcc/jcc3/sources/jcc.cpp
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc3/sources/jcc.cpp?rev=1843871&r1=1843870&r2=1843871&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc3/sources/jcc.cpp (original)
+++ lucene/pylucene/trunk/jcc/jcc3/sources/jcc.cpp Mon Oct 15 00:48:50 2018
@@ -462,7 +462,7 @@ _DLL_EXPORT PyObject *initVM(PyObject *s
                 {
                     free(buf);
                     for (unsigned int i = 0; i < nOptions; i++)
-                        delete vm_options[i].optionString;
+                        free(vm_options[i].optionString);
                     PyErr_Format(PyExc_ValueError,
                                  "Too many options (> %d)", nOptions);
                     return NULL;
@@ -490,7 +490,7 @@ _DLL_EXPORT PyObject *initVM(PyObject *s
                     else
                     {
                         for (unsigned int j = 0; j < nOptions; j++)
-                            delete vm_options[j].optionString;
+                            free(vm_options[j].optionString);
                         PyErr_Format(PyExc_ValueError,
                                      "Too many options (> %d)", nOptions);
                         Py_DECREF(fast);
@@ -500,7 +500,7 @@ _DLL_EXPORT PyObject *initVM(PyObject *s
                 else
                 {
                     for (unsigned int j = 0; j < nOptions; j++)
-                        delete vm_options[j].optionString;
+                        free(vm_options[j].optionString);
                     PyErr_Format(PyExc_TypeError,
                                  "vmargs arg %d is not a string", i);
                     Py_DECREF(fast);
@@ -527,7 +527,7 @@ _DLL_EXPORT PyObject *initVM(PyObject *s
         if (JNI_CreateJavaVM(&vm, (void **) &vm_env, &vm_args) < 0)
         {
             for (unsigned int i = 0; i < nOptions; i++)
-                delete vm_options[i].optionString;
+                free(vm_options[i].optionString);
 
             PyErr_Format(PyExc_ValueError,
                          "An error occurred while creating Java VM");
@@ -537,7 +537,7 @@ _DLL_EXPORT PyObject *initVM(PyObject *s
         env->set_vm(vm, vm_env);
 
         for (unsigned int i = 0; i < nOptions; i++)
-            delete vm_options[i].optionString;
+            free(vm_options[i].optionString);
 
         t_jccenv *jccenv = (t_jccenv *) PY_TYPE(JCCEnv)->tp_alloc(PY_TYPE(JCCEnv), 0);
         jccenv->env = env;