Ignore:
Timestamp:
Mar 19, 2014, 11:11:30 AM (11 years ago)
Author:
dmik
Message:

python: Update vendor to 2.7.6.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • python/vendor/current/Modules/pyexpat.c

    r2 r388  
    246246   used right after `flag_error()` is called. */
    247247static void
    248 noop_character_data_handler(void *userData, const XML_Char *data, int len) 
     248noop_character_data_handler(void *userData, const XML_Char *data, int len)
    249249{
    250250    /* Do nothing. */
     
    262262getcode(enum HandlerTypes slot, char* func_name, int lineno)
    263263{
    264     PyObject *code = NULL;
    265     PyObject *name = NULL;
    266     PyObject *nulltuple = NULL;
    267     PyObject *filename = NULL;
    268 
    269264    if (handler_info[slot].tb_code == NULL) {
    270         code = PyString_FromString("");
    271         if (code == NULL)
    272             goto failed;
    273         name = PyString_FromString(func_name);
    274         if (name == NULL)
    275             goto failed;
    276         nulltuple = PyTuple_New(0);
    277         if (nulltuple == NULL)
    278             goto failed;
    279         filename = PyString_FromString(__FILE__);
    280265        handler_info[slot].tb_code =
    281             PyCode_New(0,               /* argcount */
    282                        0,               /* nlocals */
    283                        0,               /* stacksize */
    284                        0,               /* flags */
    285                        code,            /* code */
    286                        nulltuple,       /* consts */
    287                        nulltuple,       /* names */
    288                        nulltuple,       /* varnames */
    289 #if PYTHON_API_VERSION >= 1010
    290                        nulltuple,       /* freevars */
    291                        nulltuple,       /* cellvars */
    292 #endif
    293                        filename,        /* filename */
    294                        name,            /* name */
    295                        lineno,          /* firstlineno */
    296                        code             /* lnotab */
    297                        );
    298         if (handler_info[slot].tb_code == NULL)
    299             goto failed;
    300         Py_DECREF(code);
    301         Py_DECREF(nulltuple);
    302         Py_DECREF(filename);
    303         Py_DECREF(name);
     266            PyCode_NewEmpty(__FILE__, func_name, lineno);
    304267    }
    305268    return handler_info[slot].tb_code;
    306  failed:
    307     Py_XDECREF(code);
    308     Py_XDECREF(name);
    309     return NULL;
    310269}
    311270
     
    316275    int result = 0;
    317276    if (!tstate->use_tracing || tstate->tracing)
    318         return 0;
     277        return 0;
    319278    if (tstate->c_profilefunc != NULL) {
    320         tstate->tracing++;
    321         result = tstate->c_profilefunc(tstate->c_profileobj,
    322                                        f, code , val);
    323         tstate->use_tracing = ((tstate->c_tracefunc != NULL)
    324                                || (tstate->c_profilefunc != NULL));
    325         tstate->tracing--;
    326         if (result)
    327             return result;
     279        tstate->tracing++;
     280        result = tstate->c_profilefunc(tstate->c_profileobj,
     281                                       f, code , val);
     282        tstate->use_tracing = ((tstate->c_tracefunc != NULL)
     283                               || (tstate->c_profilefunc != NULL));
     284        tstate->tracing--;
     285        if (result)
     286            return result;
    328287    }
    329288    if (tstate->c_tracefunc != NULL) {
    330         tstate->tracing++;
    331         result = tstate->c_tracefunc(tstate->c_traceobj,
    332                                      f, code , val);
    333         tstate->use_tracing = ((tstate->c_tracefunc != NULL)
    334                                || (tstate->c_profilefunc != NULL));
    335         tstate->tracing--;
    336     }   
     289        tstate->tracing++;
     290        result = tstate->c_tracefunc(tstate->c_traceobj,
     291                                     f, code , val);
     292        tstate->use_tracing = ((tstate->c_tracefunc != NULL)
     293                               || (tstate->c_profilefunc != NULL));
     294        tstate->tracing--;
     295    }
    337296    return result;
    338297}
     
    345304
    346305    if (tstate->c_tracefunc == NULL)
    347         return 0;
     306        return 0;
    348307
    349308    PyErr_Fetch(&type, &value, &traceback);
    350309    if (value == NULL) {
    351         value = Py_None;
    352         Py_INCREF(value);
     310        value = Py_None;
     311        Py_INCREF(value);
    353312    }
    354313#if PY_VERSION_HEX < 0x02040000
     
    358317#endif
    359318    if (arg == NULL) {
    360         PyErr_Restore(type, value, traceback);
    361         return 0;
     319        PyErr_Restore(type, value, traceback);
     320        return 0;
    362321    }
    363322    err = trace_frame(tstate, f, PyTrace_EXCEPTION, arg);
    364323    Py_DECREF(arg);
    365324    if (err == 0)
    366         PyErr_Restore(type, value, traceback);
     325        PyErr_Restore(type, value, traceback);
    367326    else {
    368         Py_XDECREF(type);
    369         Py_XDECREF(value);
    370         Py_XDECREF(traceback);
     327        Py_XDECREF(type);
     328        Py_XDECREF(value);
     329        Py_XDECREF(traceback);
    371330    }
    372331    return err;
     
    384343    if (c == NULL)
    385344        return NULL;
    386    
     345
    387346    f = PyFrame_New(tstate, c, PyEval_GetGlobals(), NULL);
    388347    if (f == NULL)
     
    391350#ifdef FIX_TRACE
    392351    if (trace_frame(tstate, f, PyTrace_CALL, Py_None) < 0) {
    393         return NULL;
     352        return NULL;
    394353    }
    395354#endif
    396355    res = PyEval_CallObject(func, args);
    397356    if (res == NULL) {
    398         if (tstate->curexc_traceback == NULL)
    399             PyTraceBack_Here(f);
     357        if (tstate->curexc_traceback == NULL)
     358            PyTraceBack_Here(f);
    400359        XML_StopParser(self->itself, XML_FALSE);
    401360#ifdef FIX_TRACE
    402         if (trace_frame_exc(tstate, f) < 0) {
    403             return NULL;
    404         }
     361        if (trace_frame_exc(tstate, f) < 0) {
     362            return NULL;
     363        }
    405364    }
    406365    else {
    407         if (trace_frame(tstate, f, PyTrace_RETURN, res) < 0) {
    408             Py_XDECREF(res);
    409             res = NULL;
    410         }
     366        if (trace_frame(tstate, f, PyTrace_RETURN, res) < 0) {
     367            Py_XDECREF(res);
     368            res = NULL;
     369        }
    411370    }
    412371#else
     
    433392    /* result can be NULL if the unicode conversion failed. */
    434393    if (!result)
    435         return result;
     394        return result;
    436395    if (!self->intern)
    437         return result;
     396        return result;
    438397    value = PyDict_GetItem(self->intern, result);
    439398    if (!value) {
    440         if (PyDict_SetItem(self->intern, result, result) == 0)
     399        if (PyDict_SetItem(self->intern, result, result) == 0)
    441400            return result;
    442401        else
     
    457416    PyObject *temp;
    458417
     418    if (!have_handler(self, CharacterData))
     419        return -1;
     420
    459421    args = PyTuple_New(1);
    460422    if (args == NULL)
    461423        return -1;
    462424#ifdef Py_USING_UNICODE
    463     temp = (self->returns_unicode 
    464             ? conv_string_len_to_unicode(buffer, len) 
     425    temp = (self->returns_unicode
     426            ? conv_string_len_to_unicode(buffer, len)
    465427            : conv_string_len_to_utf8(buffer, len));
    466428#else
     
    504466
    505467static void
    506 my_CharacterDataHandler(void *userData, const XML_Char *data, int len) 
     468my_CharacterDataHandler(void *userData, const XML_Char *data, int len)
    507469{
    508470    xmlparseobject *self = (xmlparseobject *) userData;
     
    644606
    645607#define VOID_HANDLER(NAME, PARAMS, PARAM_FORMAT) \
    646         RC_HANDLER(void, NAME, PARAMS, ;, PARAM_FORMAT, ;, ;,\
    647         (xmlparseobject *)userData)
     608        RC_HANDLER(void, NAME, PARAMS, ;, PARAM_FORMAT, ;, ;,\
     609        (xmlparseobject *)userData)
    648610
    649611#define INT_HANDLER(NAME, PARAMS, PARAM_FORMAT)\
    650         RC_HANDLER(int, NAME, PARAMS, int rc=0;, PARAM_FORMAT, \
    651                         rc = PyInt_AsLong(rv);, rc, \
    652         (xmlparseobject *)userData)
     612        RC_HANDLER(int, NAME, PARAMS, int rc=0;, PARAM_FORMAT, \
     613                        rc = PyInt_AsLong(rv);, rc, \
     614        (xmlparseobject *)userData)
    653615
    654616VOID_HANDLER(EndElement,
     
    823785
    824786VOID_HANDLER(NotationDecl,
    825                 (void *userData,
    826                         const XML_Char *notationName,
    827                         const XML_Char *base,
    828                         const XML_Char *systemId,
    829                         const XML_Char *publicId),
     787                (void *userData,
     788                        const XML_Char *notationName,
     789                        const XML_Char *base,
     790                        const XML_Char *systemId,
     791                        const XML_Char *publicId),
    830792                ("(NNNN)",
    831                 string_intern(self, notationName), string_intern(self, base),
    832                 string_intern(self, systemId), string_intern(self, publicId)))
     793                string_intern(self, notationName), string_intern(self, base),
     794                string_intern(self, systemId), string_intern(self, publicId)))
    833795
    834796VOID_HANDLER(StartNamespaceDecl,
    835                 (void *userData,
    836                       const XML_Char *prefix,
    837                       const XML_Char *uri),
     797                (void *userData,
     798                      const XML_Char *prefix,
     799                      const XML_Char *uri),
    838800                ("(NN)",
    839801                 string_intern(self, prefix), string_intern(self, uri)))
    840802
    841803VOID_HANDLER(EndNamespaceDecl,
    842                 (void *userData,
    843                     const XML_Char *prefix),
     804                (void *userData,
     805                    const XML_Char *prefix),
    844806                ("(N)", string_intern(self, prefix)))
    845807
     
    850812VOID_HANDLER(StartCdataSection,
    851813               (void *userData),
    852                 ("()"))
     814                ("()"))
    853815
    854816VOID_HANDLER(EndCdataSection,
    855817               (void *userData),
    856                 ("()"))
     818                ("()"))
    857819
    858820#ifndef Py_USING_UNICODE
    859821VOID_HANDLER(Default,
    860               (void *userData, const XML_Char *s, int len),
    861               ("(N)", conv_string_len_to_utf8(s,len)))
     822              (void *userData, const XML_Char *s, int len),
     823              ("(N)", conv_string_len_to_utf8(s,len)))
    862824
    863825VOID_HANDLER(DefaultHandlerExpand,
    864               (void *userData, const XML_Char *s, int len),
    865               ("(N)", conv_string_len_to_utf8(s,len)))
     826              (void *userData, const XML_Char *s, int len),
     827              ("(N)", conv_string_len_to_utf8(s,len)))
    866828#else
    867829VOID_HANDLER(Default,
    868               (void *userData, const XML_Char *s, int len),
    869               ("(N)", (self->returns_unicode
    870                        ? conv_string_len_to_unicode(s,len)
    871                        : conv_string_len_to_utf8(s,len))))
     830              (void *userData, const XML_Char *s, int len),
     831              ("(N)", (self->returns_unicode
     832                       ? conv_string_len_to_unicode(s,len)
     833                       : conv_string_len_to_utf8(s,len))))
    872834
    873835VOID_HANDLER(DefaultHandlerExpand,
    874               (void *userData, const XML_Char *s, int len),
    875               ("(N)", (self->returns_unicode
    876                        ? conv_string_len_to_unicode(s,len)
    877                        : conv_string_len_to_utf8(s,len))))
     836              (void *userData, const XML_Char *s, int len),
     837              ("(N)", (self->returns_unicode
     838                       ? conv_string_len_to_unicode(s,len)
     839                       : conv_string_len_to_utf8(s,len))))
    878840#endif
    879841
    880842INT_HANDLER(NotStandalone,
    881                 (void *userData),
    882                 ("()"))
     843                (void *userData),
     844                ("()"))
    883845
    884846RC_HANDLER(int, ExternalEntityRef,
    885                 (XML_Parser parser,
    886                     const XML_Char *context,
    887                     const XML_Char *base,
    888                     const XML_Char *systemId,
    889                     const XML_Char *publicId),
    890                 int rc=0;,
     847                (XML_Parser parser,
     848                    const XML_Char *context,
     849                    const XML_Char *base,
     850                    const XML_Char *systemId,
     851                    const XML_Char *publicId),
     852                int rc=0;,
    891853                ("(O&NNN)",
    892                 STRING_CONV_FUNC,context, string_intern(self, base),
    893                 string_intern(self, systemId), string_intern(self, publicId)),
    894                 rc = PyInt_AsLong(rv);, rc,
    895                 XML_GetUserData(parser))
     854                STRING_CONV_FUNC,context, string_intern(self, base),
     855                string_intern(self, systemId), string_intern(self, publicId)),
     856                rc = PyInt_AsLong(rv);, rc,
     857                XML_GetUserData(parser))
    896858
    897859/* XXX UnknownEncodingHandler */
     
    1001963{
    1002964    int rv = 1;
    1003     FILE *fp;
    1004965    PyObject *readmethod = NULL;
    1005966
    1006     if (PyFile_Check(f)) {
    1007         fp = PyFile_AsFile(f);
    1008     }
    1009     else {
    1010         fp = NULL;
    1011         readmethod = PyObject_GetAttrString(f, "read");
    1012         if (readmethod == NULL) {
    1013             PyErr_Clear();
    1014             PyErr_SetString(PyExc_TypeError,
    1015                             "argument must have 'read' attribute");
    1016             return NULL;
    1017         }
     967    readmethod = PyObject_GetAttrString(f, "read");
     968    if (readmethod == NULL) {
     969        PyErr_SetString(PyExc_TypeError,
     970                        "argument must have 'read' attribute");
     971        return NULL;
     972
    1018973    }
    1019974    for (;;) {
     
    1025980        }
    1026981
    1027         if (fp) {
    1028             bytes_read = fread(buf, sizeof(char), BUF_SIZE, fp);
    1029             if (bytes_read < 0) {
    1030                 PyErr_SetFromErrno(PyExc_IOError);
    1031                 return NULL;
    1032             }
    1033         }
    1034         else {
    1035             bytes_read = readinst(buf, BUF_SIZE, readmethod);
    1036             if (bytes_read < 0) {
    1037                 Py_DECREF(readmethod);
    1038                 return NULL;
    1039             }
    1040         }
     982        bytes_read = readinst(buf, BUF_SIZE, readmethod);
     983        if (bytes_read < 0) {
     984            Py_XDECREF(readmethod);
     985            return NULL;
     986        }
     987
    1041988        rv = XML_ParseBuffer(self->itself, bytes_read, bytes_read == 0);
    1042989        if (PyErr_Occurred()) {
     
    10641011        return NULL;
    10651012    if (!XML_SetBase(self->itself, base)) {
    1066         return PyErr_NoMemory();
     1013        return PyErr_NoMemory();
    10671014    }
    10681015    Py_INCREF(Py_None);
     
    11551102    new_parser->ns_prefixes = self->ns_prefixes;
    11561103    new_parser->itself = XML_ExternalEntityParserCreate(self->itself, context,
    1157                                                         encoding);
     1104                                                        encoding);
    11581105    new_parser->handlers = 0;
    11591106    new_parser->intern = self->intern;
     
    12281175{
    12291176    PyObject *flagobj = NULL;
    1230     XML_Bool flag = XML_TRUE;
     1177    int flag = 1;
    12311178    enum XML_Error rc;
    1232     if (!PyArg_UnpackTuple(args, "UseForeignDTD", 0, 1, &flagobj))
     1179    if (!PyArg_ParseTuple(args, "|O:UseForeignDTD", &flagobj))
    12331180        return NULL;
    1234     if (flagobj != NULL)
    1235         flag = PyObject_IsTrue(flagobj) ? XML_TRUE : XML_FALSE;
    1236     rc = XML_UseForeignDTD(self->itself, flag);
     1181    if (flagobj != NULL) {
     1182        flag = PyObject_IsTrue(flagobj);
     1183        if (flag < 0)
     1184            return NULL;
     1185    }
     1186    rc = XML_UseForeignDTD(self->itself, flag ? XML_TRUE : XML_FALSE);
    12371187    if (rc != XML_ERROR_NONE) {
    12381188        return set_error(self, rc);
     
    12441194
    12451195static struct PyMethodDef xmlparse_methods[] = {
    1246     {"Parse",     (PyCFunction)xmlparse_Parse,
    1247                   METH_VARARGS, xmlparse_Parse__doc__},
     1196    {"Parse",     (PyCFunction)xmlparse_Parse,
     1197                  METH_VARARGS, xmlparse_Parse__doc__},
    12481198    {"ParseFile", (PyCFunction)xmlparse_ParseFile,
    1249                   METH_O,       xmlparse_ParseFile__doc__},
     1199                  METH_O,       xmlparse_ParseFile__doc__},
    12501200    {"SetBase",   (PyCFunction)xmlparse_SetBase,
    1251                   METH_VARARGS, xmlparse_SetBase__doc__},
     1201                  METH_VARARGS, xmlparse_SetBase__doc__},
    12521202    {"GetBase",   (PyCFunction)xmlparse_GetBase,
    1253                   METH_NOARGS, xmlparse_GetBase__doc__},
     1203                  METH_NOARGS, xmlparse_GetBase__doc__},
    12541204    {"ExternalEntityParserCreate", (PyCFunction)xmlparse_ExternalEntityParserCreate,
    1255                   METH_VARARGS, xmlparse_ExternalEntityParserCreate__doc__},
     1205                  METH_VARARGS, xmlparse_ExternalEntityParserCreate__doc__},
    12561206    {"SetParamEntityParsing", (PyCFunction)xmlparse_SetParamEntityParsing,
    1257                   METH_VARARGS, xmlparse_SetParamEntityParsing__doc__},
     1207                  METH_VARARGS, xmlparse_SetParamEntityParsing__doc__},
    12581208    {"GetInputContext", (PyCFunction)xmlparse_GetInputContext,
    1259                   METH_NOARGS, xmlparse_GetInputContext__doc__},
     1209                  METH_NOARGS, xmlparse_GetInputContext__doc__},
    12601210#if XML_COMBINED_VERSION >= 19505
    12611211    {"UseForeignDTD", (PyCFunction)xmlparse_UseForeignDTD,
    1262                   METH_VARARGS, xmlparse_UseForeignDTD__doc__},
    1263 #endif
    1264     {NULL,        NULL}         /* sentinel */
     1212                  METH_VARARGS, xmlparse_UseForeignDTD__doc__},
     1213#endif
     1214    {NULL,        NULL}         /* sentinel */
    12651215};
    12661216
     
    12821232    int i;
    12831233    for (i = 0; i < 256; i++) {
    1284         template_buffer[i] = i;
     1234        template_buffer[i] = i;
    12851235    }
    12861236    template_buffer[256] = 0;
     
    13011251
    13021252    if (_u_string == NULL)
    1303         return result;
     1253        return result;
     1254
     1255    if (PyUnicode_GET_SIZE(_u_string) != 256) {
     1256        Py_DECREF(_u_string);
     1257        PyErr_SetString(PyExc_ValueError,
     1258                        "multi-byte encodings are not supported");
     1259        return result;
     1260    }
    13041261
    13051262    for (i = 0; i < 256; i++) {
    1306         /* Stupid to access directly, but fast */
    1307         Py_UNICODE c = _u_string->str[i];
    1308         if (c == Py_UNICODE_REPLACEMENT_CHARACTER)
    1309             info->map[i] = -1;
    1310         else
    1311             info->map[i] = c;
     1263        /* Stupid to access directly, but fast */
     1264        Py_UNICODE c = _u_string->str[i];
     1265        if (c == Py_UNICODE_REPLACEMENT_CHARACTER)
     1266            info->map[i] = -1;
     1267        else
     1268            info->map[i] = c;
    13121269    }
    13131270    info->data = NULL;
     
    13561313        self->itself = XML_ParserCreate(encoding);
    13571314    }
     1315#if ((XML_MAJOR_VERSION >= 2) && (XML_MINOR_VERSION >= 1)) || defined(XML_HAS_SET_HASH_SALT)
     1316    /* This feature was added upstream in libexpat 2.1.0.  Our expat copy
     1317     * has a backport of this feature where we also define XML_HAS_SET_HASH_SALT
     1318     * to indicate that we can still use it. */
     1319    XML_SetHashSalt(self->itself,
     1320                    (unsigned long)_Py_HashSecret.prefix);
     1321#endif
    13581322    self->intern = intern;
    13591323    Py_XINCREF(self->intern);
     
    15101474    }
    15111475
    1512 #define APPEND(list, str)                               \
    1513         do {                                            \
    1514                 PyObject *o = PyString_FromString(str); \
    1515                 if (o != NULL)                          \
    1516                         PyList_Append(list, o);         \
    1517                 Py_XDECREF(o);                          \
     1476#define APPEND(list, str)                               \
     1477        do {                                            \
     1478                PyObject *o = PyString_FromString(str); \
     1479                if (o != NULL)                          \
     1480                        PyList_Append(list, o);         \
     1481                Py_XDECREF(o);                          \
    15181482        } while (0)
    15191483
     
    15211485        int i;
    15221486        PyObject *rc = PyList_New(0);
    1523         if (!rc)
    1524                 return NULL;
     1487        if (!rc)
     1488                return NULL;
    15251489        for (i = 0; handler_info[i].name != NULL; i++) {
    15261490            PyObject *o = get_handler_name(&handler_info[i]);
     
    15961560    }
    15971561    if (strcmp(name, "buffer_text") == 0) {
    1598         if (PyObject_IsTrue(v)) {
     1562        int b = PyObject_IsTrue(v);
     1563        if (b < 0)
     1564            return -1;
     1565        if (b) {
    15991566            if (self->buffer == NULL) {
    16001567                self->buffer = malloc(self->buffer_size);
     
    16151582    }
    16161583    if (strcmp(name, "namespace_prefixes") == 0) {
    1617         if (PyObject_IsTrue(v))
    1618             self->ns_prefixes = 1;
    1619         else
    1620             self->ns_prefixes = 0;
     1584        int b = PyObject_IsTrue(v);
     1585        if (b < 0)
     1586            return -1;
     1587        self->ns_prefixes = b;
    16211588        XML_SetReturnNSTriplet(self->itself, self->ns_prefixes);
    16221589        return 0;
    16231590    }
    16241591    if (strcmp(name, "ordered_attributes") == 0) {
    1625         if (PyObject_IsTrue(v))
    1626             self->ordered_attributes = 1;
    1627         else
    1628             self->ordered_attributes = 0;
     1592        int b = PyObject_IsTrue(v);
     1593        if (b < 0)
     1594            return -1;
     1595        self->ordered_attributes = b;
    16291596        return 0;
    16301597    }
    16311598    if (strcmp(name, "returns_unicode") == 0) {
    1632         if (PyObject_IsTrue(v)) {
     1599        int b = PyObject_IsTrue(v);
     1600        if (b < 0)
     1601            return -1;
    16331602#ifndef Py_USING_UNICODE
     1603        if (b) {
    16341604            PyErr_SetString(PyExc_ValueError,
    16351605                            "Unicode support not available");
    16361606            return -1;
    1637 #else
    1638             self->returns_unicode = 1;
    1639 #endif
    1640         }
    1641         else
    1642             self->returns_unicode = 0;
     1607        }
     1608#endif
     1609        self->returns_unicode = b;
    16431610        return 0;
    16441611    }
    16451612    if (strcmp(name, "specified_attributes") == 0) {
    1646         if (PyObject_IsTrue(v))
    1647             self->specified_attributes = 1;
    1648         else
    1649             self->specified_attributes = 0;
     1613        int b = PyObject_IsTrue(v);
     1614        if (b < 0)
     1615            return -1;
     1616        self->specified_attributes = b;
    16501617        return 0;
    16511618    }
     
    16541621      long new_buffer_size;
    16551622      if (!PyInt_Check(v)) {
    1656         PyErr_SetString(PyExc_TypeError, "buffer_size must be an integer");
    1657         return -1;
     1623        PyErr_SetString(PyExc_TypeError, "buffer_size must be an integer");
     1624        return -1;
    16581625      }
    16591626
     
    16611628      /* trivial case -- no change */
    16621629      if (new_buffer_size == self->buffer_size) {
    1663         return 0;
     1630        return 0;
    16641631      }
    16651632
    16661633      if (new_buffer_size <= 0) {
    1667         PyErr_SetString(PyExc_ValueError, "buffer_size must be greater than zero");
    1668         return -1;
     1634        PyErr_SetString(PyExc_ValueError, "buffer_size must be greater than zero");
     1635        return -1;
    16691636      }
    16701637
    16711638      /* check maximum */
    16721639      if (new_buffer_size > INT_MAX) {
    1673         char errmsg[100];
    1674         sprintf(errmsg, "buffer_size must not be greater than %i", INT_MAX);
    1675         PyErr_SetString(PyExc_ValueError, errmsg);
    1676         return -1;     
     1640        char errmsg[100];
     1641        sprintf(errmsg, "buffer_size must not be greater than %i", INT_MAX);
     1642        PyErr_SetString(PyExc_ValueError, errmsg);
     1643        return -1;
    16771644      }
    16781645
    16791646      if (self->buffer != NULL) {
    1680         /* there is already a buffer */
    1681         if (self->buffer_used != 0) {
    1682           flush_character_buffer(self);
    1683         }
    1684         /* free existing buffer */
    1685         free(self->buffer);
     1647        /* there is already a buffer */
     1648        if (self->buffer_used != 0) {
     1649          flush_character_buffer(self);
     1650        }
     1651        /* free existing buffer */
     1652        free(self->buffer);
    16861653      }
    16871654      self->buffer = malloc(new_buffer_size);
    16881655      if (self->buffer == NULL) {
    1689         PyErr_NoMemory();
    1690         return -1;
    1691       }   
     1656        PyErr_NoMemory();
     1657        return -1;
     1658      }
    16921659      self->buffer_size = new_buffer_size;
    16931660      return 0;
     
    17321699
    17331700static PyTypeObject Xmlparsetype = {
    1734         PyVarObject_HEAD_INIT(NULL, 0)
    1735         "pyexpat.xmlparser",            /*tp_name*/
    1736         sizeof(xmlparseobject) + PyGC_HEAD_SIZE,/*tp_basicsize*/
    1737         0,                              /*tp_itemsize*/
    1738         /* methods */
    1739         (destructor)xmlparse_dealloc,   /*tp_dealloc*/
    1740         (printfunc)0,           /*tp_print*/
    1741         (getattrfunc)xmlparse_getattr,  /*tp_getattr*/
    1742         (setattrfunc)xmlparse_setattr,  /*tp_setattr*/
    1743         (cmpfunc)0,             /*tp_compare*/
    1744         (reprfunc)0,            /*tp_repr*/
    1745         0,                      /*tp_as_number*/
    1746         0,              /*tp_as_sequence*/
    1747         0,              /*tp_as_mapping*/
    1748         (hashfunc)0,            /*tp_hash*/
    1749         (ternaryfunc)0,         /*tp_call*/
    1750         (reprfunc)0,            /*tp_str*/
    1751         0,              /* tp_getattro */
    1752         0,              /* tp_setattro */
    1753         0,              /* tp_as_buffer */
     1701        PyVarObject_HEAD_INIT(NULL, 0)
     1702        "pyexpat.xmlparser",            /*tp_name*/
     1703        sizeof(xmlparseobject) + PyGC_HEAD_SIZE,/*tp_basicsize*/
     1704        0,                              /*tp_itemsize*/
     1705        /* methods */
     1706        (destructor)xmlparse_dealloc,   /*tp_dealloc*/
     1707        (printfunc)0,           /*tp_print*/
     1708        (getattrfunc)xmlparse_getattr,  /*tp_getattr*/
     1709        (setattrfunc)xmlparse_setattr,  /*tp_setattr*/
     1710        (cmpfunc)0,             /*tp_compare*/
     1711        (reprfunc)0,            /*tp_repr*/
     1712        0,                      /*tp_as_number*/
     1713        0,              /*tp_as_sequence*/
     1714        0,              /*tp_as_mapping*/
     1715        (hashfunc)0,            /*tp_hash*/
     1716        (ternaryfunc)0,         /*tp_call*/
     1717        (reprfunc)0,            /*tp_str*/
     1718        0,              /* tp_getattro */
     1719        0,              /* tp_setattro */
     1720        0,              /* tp_as_buffer */
    17541721#ifdef Py_TPFLAGS_HAVE_GC
    1755         Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
     1722        Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
    17561723#else
    1757         Py_TPFLAGS_DEFAULT | Py_TPFLAGS_GC, /*tp_flags*/
    1758 #endif
    1759         Xmlparsetype__doc__, /* tp_doc - Documentation string */
     1724        Py_TPFLAGS_DEFAULT | Py_TPFLAGS_GC, /*tp_flags*/
     1725#endif
     1726        Xmlparsetype__doc__, /* tp_doc - Documentation string */
    17601727#ifdef WITH_CYCLE_GC
    1761         (traverseproc)xmlparse_traverse,        /* tp_traverse */
    1762         (inquiry)xmlparse_clear         /* tp_clear */
     1728        (traverseproc)xmlparse_traverse,        /* tp_traverse */
     1729        (inquiry)xmlparse_clear         /* tp_clear */
    17631730#else
    1764         0, 0
     1731        0, 0
    17651732#endif
    17661733};
     
    17971764       Not passing anything means that a new dictionary is used. */
    17981765    if (intern == Py_None)
    1799         intern = NULL;
     1766        intern = NULL;
    18001767    else if (intern == NULL) {
    1801         intern = PyDict_New();
    1802         if (!intern)
    1803             return NULL;
    1804         intern_decref = 1;
     1768        intern = PyDict_New();
     1769        if (!intern)
     1770            return NULL;
     1771        intern_decref = 1;
    18051772    }
    18061773    else if (!PyDict_Check(intern)) {
    1807         PyErr_SetString(PyExc_TypeError, "intern must be a dictionary");
    1808         return NULL;
     1774        PyErr_SetString(PyExc_TypeError, "intern must be a dictionary");
     1775        return NULL;
    18091776    }
    18101777
    18111778    result = newxmlparseobject(encoding, namespace_separator, intern);
    18121779    if (intern_decref) {
    1813         Py_DECREF(intern);
     1780        Py_DECREF(intern);
    18141781    }
    18151782    return result;
     
    18331800
    18341801static struct PyMethodDef pyexpat_methods[] = {
    1835     {"ParserCreate",    (PyCFunction)pyexpat_ParserCreate,
     1802    {"ParserCreate",    (PyCFunction)pyexpat_ParserCreate,
    18361803     METH_VARARGS|METH_KEYWORDS, pyexpat_ParserCreate__doc__},
    1837     {"ErrorString",     (PyCFunction)pyexpat_ErrorString,
    1838      METH_VARARGS,      pyexpat_ErrorString__doc__},
    1839 
    1840     {NULL,       (PyCFunction)NULL, 0, NULL}            /* sentinel */
     1804    {"ErrorString",     (PyCFunction)pyexpat_ErrorString,
     1805     METH_VARARGS,      pyexpat_ErrorString__doc__},
     1806
     1807    {NULL,       (PyCFunction)NULL, 0, NULL}            /* sentinel */
    18411808};
    18421809
     
    18451812PyDoc_STRVAR(pyexpat_module_documentation,
    18461813"Python wrapper for Expat parser.");
    1847 
    1848 /* Return a Python string that represents the version number without the
    1849  * extra cruft added by revision control, even if the right options were
    1850  * given to the "cvs export" command to make it not include the extra
    1851  * cruft.
    1852  */
    1853 static PyObject *
    1854 get_version_string(void)
    1855 {
    1856     static char *rcsid = "$Revision: 64048 $";
    1857     char *rev = rcsid;
    1858     int i = 0;
    1859 
    1860     while (!isdigit(Py_CHARMASK(*rev)))
    1861         ++rev;
    1862     while (rev[i] != ' ' && rev[i] != '\0')
    1863         ++i;
    1864 
    1865     return PyString_FromStringAndSize(rev, i);
    1866 }
    18671814
    18681815/* Initialization function for the module */
     
    18951842    PyObject *model_module;
    18961843    PyObject *sys_modules;
     1844    PyObject *version;
    18971845    static struct PyExpat_CAPI capi;
    18981846    PyObject* capi_object;
     
    19101858                       pyexpat_module_documentation);
    19111859    if (m == NULL)
    1912         return;
     1860        return;
    19131861
    19141862    /* Add some symbolic constants to the module */
     
    19261874    PyModule_AddObject(m, "XMLParserType", (PyObject *) &Xmlparsetype);
    19271875
    1928     PyModule_AddObject(m, "__version__", get_version_string());
     1876    version = PyString_FromString(PY_VERSION);
     1877    if (!version)
     1878        return;
     1879    PyModule_AddObject(m, "__version__", version);
    19291880    PyModule_AddStringConstant(m, "EXPAT_VERSION",
    19301881                               (char *) XML_ExpatVersion());
     
    19691920        /* Don't core dump later! */
    19701921        return;
    1971    
     1922
    19721923#if XML_COMBINED_VERSION > 19505
    19731924    {
     
    20942045    capi.SetUnknownEncodingHandler = XML_SetUnknownEncodingHandler;
    20952046    capi.SetUserData = XML_SetUserData;
    2096    
    2097     /* export as cobject */
    2098     capi_object = PyCObject_FromVoidPtr(&capi, NULL);
     2047
     2048    /* export using capsule */
     2049    capi_object = PyCapsule_New(&capi, PyExpat_CAPSULE_NAME, NULL);
    20992050    if (capi_object)
    21002051        PyModule_AddObject(m, "expat_CAPI", capi_object);
     
    21092060    for (; handler_info[i].name != NULL; i++) {
    21102061        if (initial)
    2111             self->handlers[i] = NULL;
    2112         else {
     2062            self->handlers[i] = NULL;
     2063        else {
    21132064            temp = self->handlers[i];
    21142065            self->handlers[i] = NULL;
    21152066            Py_XDECREF(temp);
    2116             handler_info[i].setter(self->itself, NULL);
     2067            handler_info[i].setter(self->itself, NULL);
    21172068        }
    21182069    }
Note: See TracChangeset for help on using the changeset viewer.