diff -r 4d6cdea33f37 -r 46605888faf3 mercurial/parsers.c --- a/mercurial/parsers.c Sat Sep 05 16:41:21 2015 +0900 +++ b/mercurial/parsers.c Sat Sep 05 16:50:35 2015 +0900 @@ -2636,17 +2636,15 @@ metasize = (unsigned char)(*data++); right = PyString_FromStringAndSize(meta, metasize); meta += metasize; - if (!left || !right) { + tmp = PyTuple_New(2); + if (!left || !right || !tmp) { Py_XDECREF(left); Py_XDECREF(right); + Py_XDECREF(tmp); goto bail; } - tmp = PyTuple_Pack(2, left, right); - Py_DECREF(left); - Py_DECREF(right); - if (!tmp) { - goto bail; - } + PyTuple_SET_ITEM(tmp, 0, left); + PyTuple_SET_ITEM(tmp, 1, right); PyTuple_SET_ITEM(metadata, i, tmp); } ret = Py_BuildValue("(OOHO(di)O)", prec, succs, flags,