Author: mattip <[email protected]>
Branch: cpyext-ext
Changeset: r83443:06a3e1333572
Date: 2016-03-30 23:53 +0300
http://bitbucket.org/pypy/pypy/changeset/06a3e1333572/
Log: fix PyString_Concat
diff --git a/pypy/module/cpyext/bytesobject.py
b/pypy/module/cpyext/bytesobject.py
--- a/pypy/module/cpyext/bytesobject.py
+++ b/pypy/module/cpyext/bytesobject.py
@@ -6,7 +6,7 @@
from pypy.module.cpyext.pyerrors import PyErr_BadArgument
from pypy.module.cpyext.pyobject import (
PyObject, PyObjectP, Py_DecRef, make_ref, from_ref, track_reference,
- make_typedescr, get_typedescr, as_pyobj)
+ make_typedescr, get_typedescr, as_pyobj, Py_IncRef)
##
## Implementation of PyStringObject
@@ -244,15 +244,16 @@
if not ref[0]:
return
- if w_newpart is None or not PyString_Check(space, ref[0]) or \
- not PyString_Check(space, w_newpart):
+ if w_newpart is None or not PyString_Check(space, ref[0]) or not \
+ (space.isinstance_w(w_newpart, space.w_str) or
+ space.isinstance_w(w_newpart, space.w_unicode)):
Py_DecRef(space, ref[0])
ref[0] = lltype.nullptr(PyObject.TO)
return
w_str = from_ref(space, ref[0])
w_newstr = space.add(w_str, w_newpart)
- Py_DecRef(space, ref[0])
ref[0] = make_ref(space, w_newstr)
+ Py_IncRef(space, ref[0])
@cpython_api([PyObjectP, PyObject], lltype.Void)
def PyString_ConcatAndDel(space, ref, newpart):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit