Mercurial > hg
comparison mercurial/cext/dirs.c @ 50303:0d3690f8ce2a stable
cext: fix for PyLong refactoring in CPython 3.12
Compiling Mercurial with Python 3.12 a5 would fail with:
mercurial/cext/dirs.c: In function '_addpath':
mercurial/cext/dirs.c:19:44: error: 'PyLongObject' {aka 'struct _longobject'} has no member named 'ob_digit'
19 | #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0]
| ^~
mercurial/cext/dirs.c:97:25: note: in expansion of macro 'PYLONG_VALUE'
97 | PYLONG_VALUE(val) += 1;
| ^~~~~~~~~~~~
mercurial/cext/dirs.c:19:44: error: 'PyLongObject' {aka 'struct _longobject'} has no member named 'ob_digit'
19 | #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0]
| ^~
mercurial/cext/dirs.c:108:17: note: in expansion of macro 'PYLONG_VALUE'
108 | PYLONG_VALUE(val) = 1;
| ^~~~~~~~~~~~
mercurial/cext/dirs.c: In function '_delpath':
mercurial/cext/dirs.c:19:44: error: 'PyLongObject' {aka 'struct _longobject'} has no member named 'ob_digit'
19 | #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0]
| ^~
mercurial/cext/dirs.c:145:23: note: in expansion of macro 'PYLONG_VALUE'
145 | if (--PYLONG_VALUE(val) <= 0) {
| ^~~~~~~~~~~~
This was caused by
https://github.com/python/cpython/commit/c1b1f51cd1632f0b77dacd43092fb44ed5e053a9 .
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Tue, 07 Mar 2023 16:25:51 +0100 |
parents | bf6cdda979ed |
children |
comparison
equal
deleted
inserted
replaced
50302:22d7cb8174ef | 50303:0d3690f8ce2a |
---|---|
11 #include <Python.h> | 11 #include <Python.h> |
12 #include <string.h> | 12 #include <string.h> |
13 | 13 |
14 #include "util.h" | 14 #include "util.h" |
15 | 15 |
16 #if PY_VERSION_HEX >= 0x030C00A5 | |
17 #define PYLONG_VALUE(o) ((PyLongObject *)o)->long_value.ob_digit[0] | |
18 #else | |
16 #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0] | 19 #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0] |
20 #endif | |
17 | 21 |
18 /* | 22 /* |
19 * This is a multiset of directory names, built from the files that | 23 * This is a multiset of directory names, built from the files that |
20 * appear in a dirstate or manifest. | 24 * appear in a dirstate or manifest. |
21 * | 25 * |