{
if (check_ContentStatStatus(self))
return -1;
- if (!PyUnicode_Check(value) && value != Py_None) {
- PyErr_SetString(PyExc_TypeError, "String or None expected!");
+ if (!PyUnicode_Check(value) && !PyBytes_Check(value) && value != Py_None) {
+ PyErr_SetString(PyExc_TypeError, "Unicode, bytes, or None expected!");
return -1;
}
cr_ContentStat *rec = self->stat;
getitem(_MetadataLocationObject *self, PyObject *pykey)
{
char *key, *value;
- PyObject *bytekey;
if (check_MetadataLocationStatus(self))
return NULL;
}
if (PyUnicode_Check(pykey)) {
- bytekey = PyUnicode_AsUTF8String(pykey);
- key = PyBytes_AsString(bytekey);
- } else {
- key = PyBytes_AsString(pykey);
+ pykey = PyUnicode_AsUTF8String(pykey);
}
+
+ key = PyBytes_AsString(pykey);
+
value = NULL;
if (!strcmp(key, "primary")) {
if (!pkg->chunk)
pkg->chunk = g_string_chunk_new(0);
- PyObject *bytes;
if (PyUnicode_Check(value)) {
- bytes = PyUnicode_AsUTF8String(value);
- } else {
- bytes = value;
+ value = PyUnicode_AsUTF8String(value);
}
- char *str = g_string_chunk_insert(pkg->chunk, PyBytes_AsString(bytes));
+ char *str = g_string_chunk_insert(pkg->chunk, PyBytes_AsString(value));
*((char **) ((size_t) pkg + (size_t) member_offset)) = str;
return 0;
}
{
if (check_RepomdStatus(self))
return -1;
- if (!PyUnicode_Check(value) && value != Py_None) {
- PyErr_SetString(PyExc_TypeError, "String or None expected!");
+ if (!PyUnicode_Check(value) && !PyBytes_Check(value) && value != Py_None) {
+ PyErr_SetString(PyExc_TypeError, "Unicode, bytes, or None expected!");
return -1;
}
cr_Repomd *repomd = self->repomd;
{
if (check_RepomdRecordStatus(self))
return -1;
- if (!PyUnicode_Check(value) && value != Py_None) {
- PyErr_SetString(PyExc_TypeError, "String or None expected!");
+ if (!PyUnicode_Check(value) && !PyBytes_Check(value) && value != Py_None) {
+ PyErr_SetString(PyExc_TypeError, "Unicode, bytes, or None expected!");
return -1;
}
cr_RepomdRecord *rec = self->record;
g_set_error(err, ERR_DOMAIN, CRE_XMLPARSER,
"Error while error handling");
} else {
- PyObject *bytes = PyUnicode_AsUTF8String(pystr);
+ if (PyUnicode_Check(pystr)) {
+ pystr = PyUnicode_AsUTF8String(pystr);
+ }
g_set_error(err, ERR_DOMAIN, CRE_XMLPARSER,
- "%s", PyBytes_AsString(bytes));
+ "%s", PyBytes_AsString(pystr));
}
Py_XDECREF(pystr);
{
// String returned by this function shoud not be freed or modified
if (PyUnicode_Check(pyobj)) {
- PyObject *bytes = PyUnicode_AsUTF8String(pyobj);
- return PyBytes_AsString(bytes);
+ pyobj = PyUnicode_AsUTF8String(pyobj);
}
+
+ if (PyBytes_Check(pyobj)) {
+ return PyBytes_AsString(pyobj);
+ }
+
// TODO: ? Add support for pyobj like: ("xxx",) and ["xxx"]
return NULL;
}
for (Py_ssize_t x=0; x < size; x++) {
PyObject *py_str = PyList_GetItem(py_list, x);
assert(py_str != NULL);
- if (!PyUnicode_Check(py_str))
+ if (!PyUnicode_Check(py_str) && !PyBytes_Check(py_str))
// Hmm, element is not a string, just skip it
continue;
- PyObject *py_bytes = PyUnicode_AsUTF8String(py_str);
- list = g_slist_prepend(list, PyBytes_AsString(py_bytes));
+
+ if (PyUnicode_Check(py_str))
+ py_str = PyUnicode_AsUTF8String(py_str);
+
+ list = g_slist_prepend(list, PyBytes_AsString(py_str));
}
return list;
{
if (check_UpdateCollectionStatus(self))
return -1;
- if (!PyUnicode_Check(value) && value != Py_None) {
- PyErr_SetString(PyExc_TypeError, "String or None expected!");
+ if (!PyUnicode_Check(value) && !PyBytes_Check(value) && value != Py_None) {
+ PyErr_SetString(PyExc_TypeError, "Unicode, bytes, or None expected!");
return -1;
}
cr_UpdateCollection *rec = self->collection;
{
if (check_UpdateCollectionPackageStatus(self))
return -1;
- if (!PyUnicode_Check(value) && value != Py_None) {
- PyErr_SetString(PyExc_TypeError, "String or None expected!");
+ if (!PyUnicode_Check(value) && !PyBytes_Check(value) && value != Py_None) {
+ PyErr_SetString(PyExc_TypeError, "Unicode, bytes, or None expected!");
return -1;
}
cr_UpdateCollectionPackage *pkg = self->pkg;
{
if (check_UpdateRecordStatus(self))
return -1;
- if (!PyUnicode_Check(value) && value != Py_None) {
- PyErr_SetString(PyExc_TypeError, "String or None expected!");
+ if (!PyUnicode_Check(value) && !PyBytes_Check(value) && value != Py_None) {
+ PyErr_SetString(PyExc_TypeError, "Unicode, bytes, or None expected!");
return -1;
}
cr_UpdateRecord *rec = self->record;
{
if (check_UpdateReferenceStatus(self))
return -1;
- if (!PyUnicode_Check(value) && value != Py_None) {
- PyErr_SetString(PyExc_TypeError, "String or None expected!");
+ if (!PyUnicode_Check(value) && !PyBytes_Check(value) && value != Py_None) {
+ PyErr_SetString(PyExc_TypeError, "Unicode, bytes, or None expected!");
return -1;
}
+
+ if (PyUnicode_Check(value)) {
+ value = PyUnicode_AsUTF8String(value);
+ }
+
cr_UpdateReference *ref = self->reference;
char *str = cr_safe_string_chunk_insert(ref->chunk,
PyObject_ToStrOrNull(value));
+
*((char **) ((size_t) ref + (size_t) member_offset)) = str;
return 0;
}