Changeset 614


Ignore:
Timestamp:
Nov 23, 2015, 2:16:56 PM (4 years ago)
Author:
cito
Message:

Fix decoding issue in inserttable()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/module/pgmodule.c

    r597 r614  
    11041104                if (!PyTuple_Check(oargs) && !PyList_Check(oargs))
    11051105                {
    1106                         PyErr_SetString(PyExc_TypeError, "query parameters must be a tuple or list.");
     1106                        PyErr_SetString(PyExc_TypeError,
     1107                                "query parameters must be a tuple or list.");
    11071108                        return NULL;
    11081109                }
     
    11671168                                        *s = PyUnicode_AsEncodedString(obj,
    11681169                                                encoding_name, "strict");
    1169                                 if (*s == NULL)
     1170                                if (!*s)
    11701171                                {
    11711172                                        free(lparms); free(parms); free(str);
    1172                                         PyErr_SetString(PyExc_UnicodeError, "query parameter"
    1173                                                 " could not be decoded (bad client encoding)");
    11741173                                        while (i--)
    11751174                                        {
     
    11791178                                                }
    11801179                                        }
    1181                                         return NULL;
     1180                                        return NULL; /* pass the UnicodeEncodeError */
    11821181                                }
    11831182                                *p = PyBytes_AsString(*s);
     
    11871186                        {
    11881187                                *s = PyObject_Str(obj);
    1189                                 if (*s == NULL)
     1188                                if (!*s)
    11901189                                {
    11911190                                        free(lparms); free(parms); free(str);
    1192                                         PyErr_SetString(PyExc_TypeError,
    1193                                                 "query parameter has no string representation");
    11941191                                        while (i--)
    11951192                                        {
     
    11991196                                                }
    12001197                                        }
     1198                                        PyErr_SetString(PyExc_TypeError,
     1199                                                "query parameter has no string representation");
    12011200                                        return NULL;
    12021201                                }
     
    15851584                                        s = PyUnicode_AsEncodedString(item,
    15861585                                                encoding_name, "strict");
     1586                                if (!s)
     1587                                {
     1588                                        free(buffer);
     1589                                        return NULL; /* pass the UnicodeEncodeError */
     1590                                }
    15871591                                const char* t = PyBytes_AsString(s);
    15881592                                while (*t && bufsiz)
     
    17101714        if (!PyArg_ParseTuple(args, "s", &name))
    17111715        {
    1712                 PyErr_SetString(PyExc_TypeError, "parameter(name), with name (string).");
     1716                PyErr_SetString(PyExc_TypeError,
     1717                        "parameter(name), with name (string).");
    17131718                return NULL;
    17141719        }
     
    25822587                        }
    25832588                        else
    2584                                 str = PyStr_FromString(PQgetvalue(self->result, self->current_row, j));
     2589                                str = PyStr_FromString(
     2590                                        PQgetvalue(self->result, self->current_row, j));
    25852591
    25862592                        PyTuple_SET_ITEM(rowtuple, j, str);
Note: See TracChangeset for help on using the changeset viewer.