--- a/mercurial/cext/parsers.c Wed Nov 17 02:58:44 2021 +0100
+++ b/mercurial/cext/parsers.c Wed Nov 17 10:26:48 2021 +0100
@@ -66,6 +66,7 @@
int mtime_s;
int mtime_ns;
PyObject *parentfiledata;
+ PyObject *mtime;
PyObject *fallback_exec;
PyObject *fallback_symlink;
static char *keywords_name[] = {
@@ -118,10 +119,18 @@
}
if (parentfiledata != Py_None) {
- if (!PyArg_ParseTuple(parentfiledata, "ii(ii)", &mode, &size,
- &mtime_s, &mtime_ns)) {
+ if (!PyArg_ParseTuple(parentfiledata, "iiO", &mode, &size,
+ &mtime)) {
return NULL;
}
+ if (mtime != Py_None) {
+ if (!PyArg_ParseTuple(mtime, "ii", &mtime_s,
+ &mtime_ns)) {
+ return NULL;
+ }
+ } else {
+ has_meaningful_mtime = 0;
+ }
} else {
has_meaningful_data = 0;
has_meaningful_mtime = 0;
@@ -475,10 +484,19 @@
PyObject *args)
{
int size, mode, mtime_s, mtime_ns;
- if (!PyArg_ParseTuple(args, "ii(ii)", &mode, &size, &mtime_s,
- &mtime_ns)) {
+ PyObject *mtime;
+ mtime_s = 0;
+ mtime_ns = 0;
+ if (!PyArg_ParseTuple(args, "iiO", &mode, &size, &mtime)) {
return NULL;
}
+ if (mtime != Py_None) {
+ if (!PyArg_ParseTuple(mtime, "ii", &mtime_s, &mtime_ns)) {
+ return NULL;
+ }
+ } else {
+ self->flags &= ~dirstate_flag_has_mtime;
+ }
self->flags = dirstate_flag_wc_tracked | dirstate_flag_p1_tracked |
dirstate_flag_has_meaningful_data |
dirstate_flag_has_mtime;