Commit ce860949 authored by Vinzenz Feenstra's avatar Vinzenz Feenstra

Allow string + bytearray => bytearray. Fixes #780

parent 8e45b42d
...@@ -342,11 +342,17 @@ extern "C" Box* strAdd(BoxedString* lhs, Box* _rhs) { ...@@ -342,11 +342,17 @@ extern "C" Box* strAdd(BoxedString* lhs, Box* _rhs) {
} }
if (!PyString_Check(_rhs)) { if (!PyString_Check(_rhs)) {
if (PyByteArray_Check(_rhs)) {
Box* rtn = PyByteArray_Concat(lhs, _rhs);
checkAndThrowCAPIException();
return rtn;
} else {
// Note: this is deliberately not returning NotImplemented, even though // Note: this is deliberately not returning NotImplemented, even though
// that would be more usual. I assume this behavior of CPython's is // that would be more usual. I assume this behavior of CPython's is
// for backwards compatibility. // for backwards compatibility.
raiseExcHelper(TypeError, "cannot concatenate 'str' and '%s' objects", getTypeName(_rhs)); raiseExcHelper(TypeError, "cannot concatenate 'str' and '%s' objects", getTypeName(_rhs));
} }
}
BoxedString* rhs = static_cast<BoxedString*>(_rhs); BoxedString* rhs = static_cast<BoxedString*>(_rhs);
return new (lhs->size() + rhs->size()) BoxedString(lhs->s(), rhs->s()); return new (lhs->size() + rhs->size()) BoxedString(lhs->s(), rhs->s());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment