mercurial/cext/parsers.c
changeset 42068 896b19d12c08
parent 41336 763b45bc4483
child 42096 509a0477b3a6
equal deleted inserted replaced
42067:b01bbb8ff1f2 42068:896b19d12c08
     5 
     5 
     6  This software may be used and distributed according to the terms of
     6  This software may be used and distributed according to the terms of
     7  the GNU General Public License, incorporated herein by reference.
     7  the GNU General Public License, incorporated herein by reference.
     8 */
     8 */
     9 
     9 
       
    10 #define PY_SSIZE_T_CLEAN
    10 #include <Python.h>
    11 #include <Python.h>
    11 #include <ctype.h>
    12 #include <ctype.h>
    12 #include <stddef.h>
    13 #include <stddef.h>
    13 #include <string.h>
    14 #include <string.h>
    14 
    15 
   162 {
   163 {
   163 	PyObject *dmap, *cmap, *parents = NULL, *ret = NULL;
   164 	PyObject *dmap, *cmap, *parents = NULL, *ret = NULL;
   164 	PyObject *fname = NULL, *cname = NULL, *entry = NULL;
   165 	PyObject *fname = NULL, *cname = NULL, *entry = NULL;
   165 	char state, *cur, *str, *cpos;
   166 	char state, *cur, *str, *cpos;
   166 	int mode, size, mtime;
   167 	int mode, size, mtime;
   167 	unsigned int flen, len, pos = 40;
   168 	unsigned int flen, pos = 40;
   168 	int readlen;
   169 	Py_ssize_t len = 40;
       
   170 	Py_ssize_t readlen;
   169 
   171 
   170 	if (!PyArg_ParseTuple(
   172 	if (!PyArg_ParseTuple(
   171 	        args, PY23("O!O!s#:parse_dirstate", "O!O!y#:parse_dirstate"),
   173 	        args, PY23("O!O!s#:parse_dirstate", "O!O!y#:parse_dirstate"),
   172 	        &PyDict_Type, &dmap, &PyDict_Type, &cmap, &str, &readlen)) {
   174 	        &PyDict_Type, &dmap, &PyDict_Type, &cmap, &str, &readlen)) {
   173 		goto quit;
   175 		goto quit;
   583 }
   585 }
   584 
   586 
   585 static PyObject *fm1readmarkers(PyObject *self, PyObject *args)
   587 static PyObject *fm1readmarkers(PyObject *self, PyObject *args)
   586 {
   588 {
   587 	const char *data, *dataend;
   589 	const char *data, *dataend;
   588 	int datalen;
   590 	Py_ssize_t datalen, offset, stop;
   589 	Py_ssize_t offset, stop;
       
   590 	PyObject *markers = NULL;
   591 	PyObject *markers = NULL;
   591 
   592 
   592 	if (!PyArg_ParseTuple(args, PY23("s#nn", "y#nn"), &data, &datalen,
   593 	if (!PyArg_ParseTuple(args, PY23("s#nn", "y#nn"), &data, &datalen,
   593 	                      &offset, &stop)) {
   594 	                      &offset, &stop)) {
   594 		return NULL;
   595 		return NULL;