mercurial/parsers.c
changeset 17165 249cc4ec4327
parent 16955 92e1c64ba0d4
child 17353 bde1185f406c
equal deleted inserted replaced
17164:8299a9ad48dd 17165:249cc4ec4327
   305 	for (pos = 0; PyDict_Next(map, &pos, &k, &v); ) {
   305 	for (pos = 0; PyDict_Next(map, &pos, &k, &v); ) {
   306 		uint32_t mode, size, mtime;
   306 		uint32_t mode, size, mtime;
   307 		Py_ssize_t len, l;
   307 		Py_ssize_t len, l;
   308 		PyObject *o;
   308 		PyObject *o;
   309 		char *s, *t;
   309 		char *s, *t;
   310 		int err;
       
   311 
   310 
   312 		if (!PyTuple_Check(v) || PyTuple_GET_SIZE(v) != 4) {
   311 		if (!PyTuple_Check(v) || PyTuple_GET_SIZE(v) != 4) {
   313 			PyErr_SetString(PyExc_TypeError, "expected a 4-tuple");
   312 			PyErr_SetString(PyExc_TypeError, "expected a 4-tuple");
   314 			goto bail;
   313 			goto bail;
   315 		}
   314 		}
   317 		if (PyString_AsStringAndSize(o, &s, &l) == -1 || l != 1) {
   316 		if (PyString_AsStringAndSize(o, &s, &l) == -1 || l != 1) {
   318 			PyErr_SetString(PyExc_TypeError, "expected one byte");
   317 			PyErr_SetString(PyExc_TypeError, "expected one byte");
   319 			goto bail;
   318 			goto bail;
   320 		}
   319 		}
   321 		*p++ = *s;
   320 		*p++ = *s;
   322 		err = getintat(v, 1, &mode);
   321 		if (getintat(v, 1, &mode) == -1)
   323 		err |= getintat(v, 2, &size);
   322 			goto bail;
   324 		err |= getintat(v, 3, &mtime);
   323 		if (getintat(v, 2, &size) == -1)
   325 		if (err)
   324 			goto bail;
       
   325 		if (getintat(v, 3, &mtime) == -1)
   326 			goto bail;
   326 			goto bail;
   327 		if (*s == 'n' && mtime == (uint32_t)now) {
   327 		if (*s == 'n' && mtime == (uint32_t)now) {
   328 			/* See dirstate.py:write for why we do this. */
   328 			/* See dirstate.py:write for why we do this. */
   329 			if (PyDict_SetItem(map, k, dirstate_unset) == -1)
   329 			if (PyDict_SetItem(map, k, dirstate_unset) == -1)
   330 				goto bail;
   330 				goto bail;