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 *