2021-03-01 12:45:40 -04:00
|
|
|
.. bpo: 42967
|
|
|
|
.. date: 2021-02-14-15-59-16
|
|
|
|
.. nonce: YApqDS
|
|
|
|
.. release date: 2021-03-01
|
|
|
|
.. section: Security
|
|
|
|
|
|
|
|
Fix web cache poisoning vulnerability by defaulting the query args separator
|
|
|
|
to ``&``, and allowing the user to choose a custom separator.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43321
|
|
|
|
.. date: 2021-02-26-13-17-52
|
|
|
|
.. nonce: TCS3ph
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
Fix ``SystemError`` raised when ``PyArg_Parse*()`` is used with ``#`` but
|
|
|
|
without ``PY_SSIZE_T_CLEAN`` defined.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 36346
|
|
|
|
.. date: 2021-02-22-19-00-00
|
|
|
|
.. nonce: uAoni0
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
``PyArg_Parse*()`` functions now emits ``DeprecationWarning`` when ``u`` or
|
|
|
|
``Z`` format is used. See :pep:`623` for detail.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43277
|
|
|
|
.. date: 2021-02-20-16-50-22
|
|
|
|
.. nonce: FXkRXk
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
Add a new :c:func:`PySet_CheckExact` function to the C-API to check if an
|
|
|
|
object is an instance of :class:`set` but not an instance of a subtype.
|
|
|
|
Patch by Pablo Galindo.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 42990
|
|
|
|
.. date: 2021-02-18-15-12-30
|
|
|
|
.. nonce: toAqBH
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
The :data:`types.FunctionType` constructor now inherits the current builtins
|
|
|
|
if the *globals* dictionary has no ``"__builtins__"`` key, rather than using
|
|
|
|
``{"None": None}`` as builtins: same behavior as :func:`eval` and
|
|
|
|
:func:`exec` functions. Defining a function with ``def function(...): ...``
|
2021-10-06 14:40:09 -03:00
|
|
|
in Python is not affected, globals cannot be overridden with this syntax: it
|
2021-03-01 12:45:40 -04:00
|
|
|
also inherits the current builtins. Patch by Victor Stinner.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 42990
|
|
|
|
.. date: 2021-02-17-19-02-21
|
|
|
|
.. nonce: SKXHiI
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
Functions have a new ``__builtins__`` attribute which is used to look for
|
|
|
|
builtin symbols when a function is executed, instead of looking into
|
|
|
|
``__globals__['__builtins__']``. Patch by Mark Shannon and Victor Stinner.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43149
|
|
|
|
.. date: 2021-02-07-03-27-14
|
|
|
|
.. nonce: 0umPKD
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
Improve the error message in the parser for exception groups without
|
|
|
|
parentheses. Patch by Pablo Galindo.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43121
|
|
|
|
.. date: 2021-02-03-22-33-05
|
|
|
|
.. nonce: jqcViq
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
Fixed an incorrect :exc:`SyntaxError` message for missing comma in literals.
|
|
|
|
Patch by Pablo Galindo.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 42819
|
|
|
|
.. date: 2021-01-04-23-54-34
|
|
|
|
.. nonce: 4KO6wU
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
:mod:`readline`: Explicitly disable bracketed paste in the interactive
|
|
|
|
interpreter, even if it's set in the inputrc, is enabled by default (eg GNU
|
|
|
|
Readline 8.1), or a user calls ``readline.read_init_file()``. The Python
|
|
|
|
REPL has not implemented bracketed paste support. Also, bracketed mode
|
|
|
|
writes the ``"\x1b[?2004h"`` escape sequence into stdout which causes test
|
|
|
|
failures in applications that don't support it. It can still be explicitly
|
|
|
|
enabled by calling ``readline.parse_and_bind("set enable-bracketed-paste
|
|
|
|
on")``. Patch by Dustin Rodrigues.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 42808
|
|
|
|
.. date: 2021-01-02-05-10-58
|
|
|
|
.. nonce: AOxgxl
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
Simple calls to ``type(object)`` are now faster due to the ``vectorcall``
|
|
|
|
calling convention. Patch by Dennis Sweeney.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 42217
|
|
|
|
.. date: 2020-10-31-16-54-00
|
|
|
|
.. nonce: GdcHe5
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
Make the compiler merges same co_code and co_linetable objects in a module
|
|
|
|
like already did for co_consts.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 41972
|
|
|
|
.. date: 2020-10-23-23-17-23
|
|
|
|
.. nonce: kbAwg4
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
Substring search functions such as ``str1 in str2`` and ``str2.find(str1)``
|
|
|
|
now sometimes use the "Two-Way" string comparison algorithm to avoid
|
|
|
|
quadratic behavior on long strings.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 42128
|
|
|
|
.. date: 2020-10-23-08-54-04
|
|
|
|
.. nonce: SWmVEm
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
Implement :pep:`634` (structural pattern matching). Patch by Brandt Bucher.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 40692
|
|
|
|
.. date: 2020-05-19-22-10-05
|
|
|
|
.. nonce: ajEhrR
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
In the :class:`concurrent.futures.ProcessPoolExecutor`, validate that
|
|
|
|
:func:`multiprocess.synchronize` is available on a given platform and rely
|
|
|
|
on that check in the :mod:`concurrent.futures` test suite so we can run
|
|
|
|
tests that are unrelated to :class:`ProcessPoolExecutor` on those platforms.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 38302
|
|
|
|
.. date: 2019-09-28-12-23-23
|
|
|
|
.. nonce: hsCNgX
|
|
|
|
.. section: Core and Builtins
|
|
|
|
|
|
|
|
If :func:`object.__ipow__` returns :const:`NotImplemented`, the operator
|
|
|
|
will correctly fall back to :func:`object.__pow__` and
|
|
|
|
:func:`object.__rpow__` as expected.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43316
|
|
|
|
.. date: 2021-02-25-09-44-36
|
|
|
|
.. nonce: k9Gyqn
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
The ``python -m gzip`` command line application now properly fails when
|
|
|
|
detecting an unsupported extension. It exits with a non-zero exit code and
|
|
|
|
prints an error message to stderr.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43317
|
|
|
|
.. date: 2021-02-25-09-08-55
|
|
|
|
.. nonce: qrOOpB
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
Set the chunk size for the ``gzip`` module main function to
|
|
|
|
io.DEFAULT_BUFFER_SIZE. This is slightly faster than the 1024 bytes constant
|
|
|
|
that was used previously.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43146
|
|
|
|
.. date: 2021-02-23-17-20-16
|
|
|
|
.. nonce: JAFplg
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
Handle None in single-arg versions of :func:`~traceback.print_exception` and
|
|
|
|
:func:`~traceback.format_exception`.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43260
|
|
|
|
.. date: 2021-02-20-12-15-29
|
|
|
|
.. nonce: 6znAas
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
Fix TextIOWrapper can not flush internal buffer forever after very large
|
|
|
|
text is written.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43258
|
|
|
|
.. date: 2021-02-18-23-30-52
|
|
|
|
.. nonce: LeU-q8
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
Prevent needless allocation of :mod:`sqlite3` aggregate function context
|
|
|
|
when no rows match an aggregate query. Patch by Erlend E. Aasland.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43251
|
|
|
|
.. date: 2021-02-18-14-24-42
|
|
|
|
.. nonce: n6WZDw
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
Improve :mod:`sqlite3` error handling: ``sqlite3_column_name()`` failures
|
|
|
|
now result in :exc:`MemoryError`. Patch by Erlend E. Aasland.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 40956
|
|
|
|
.. date: 2021-02-10-23-29-50
|
|
|
|
.. nonce: LcAbwG
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
Fix segfault in :meth:`sqlite3.Connection.backup` if no argument was
|
2022-05-08 09:50:40 -03:00
|
|
|
provided. The regression was introduced by PR 23838. Patch by Erlend E.
|
2021-03-01 12:45:40 -04:00
|
|
|
Aasland.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43172
|
|
|
|
.. date: 2021-02-10-06-00-53
|
|
|
|
.. nonce: ZMCJni
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
The readline module now passes its tests when built directly against
|
|
|
|
libedit. Existing irreconcilable API differences remain in
|
|
|
|
:func:`readline.get_begidx` and :func:`readline.get_endidx` behavior based
|
|
|
|
on libreadline vs libedit use.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43163
|
|
|
|
.. date: 2021-02-08-21-13-51
|
|
|
|
.. nonce: E2MgzH
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
Fix a bug in :mod:`codeop` that was causing it to not ask for more input
|
|
|
|
when multi-line snippets have unclosed parentheses. Patch by Pablo Galindo
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43162
|
|
|
|
.. date: 2021-02-08-16-27-00
|
|
|
|
.. nonce: t-W7h3
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
deprecate unsupported ability to access enum members as attributes of other
|
|
|
|
enum members
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43146
|
|
|
|
.. date: 2021-02-06-21-21-35
|
|
|
|
.. nonce: MHtb2v
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
Fix recent regression in None argument handling in :mod:`~traceback` module
|
|
|
|
functions.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43102
|
|
|
|
.. date: 2021-02-03-22-55-27
|
|
|
|
.. nonce: TSlZ6J
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
The namedtuple __new__ method had its __builtins__ set to None instead of an
|
|
|
|
actual dictionary. This created problems for introspection tools.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43106
|
|
|
|
.. date: 2021-02-03-17-06-38
|
|
|
|
.. nonce: SwcSuU
|
|
|
|
.. section: Library
|
|
|
|
|
2023-07-21 06:40:37 -03:00
|
|
|
Added :const:`~os.O_EVTONLY`, :const:`~os.O_FSYNC`, :const:`~os.O_SYMLINK` and
|
|
|
|
:const:`~os.O_NOFOLLOW_ANY` for macOS. Patch by Dong-hee Na.
|
2021-03-01 12:45:40 -04:00
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 42960
|
|
|
|
.. date: 2021-01-18-21-07-20
|
|
|
|
.. nonce: a7Dote
|
|
|
|
.. section: Library
|
|
|
|
|
2023-07-21 06:40:37 -03:00
|
|
|
Adds :const:`resource.RLIMIT_KQUEUES` constant from FreeBSD to the
|
2021-03-01 12:45:40 -04:00
|
|
|
:mod:`resource` module.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 42151
|
|
|
|
.. date: 2020-10-26-18-01-09
|
|
|
|
.. nonce: et5f7s
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
Make the pure Python implementation of :mod:`xml.etree.ElementTree` behave
|
|
|
|
the same as the C implementation (:mod:`_elementree`) regarding default
|
|
|
|
attribute values (by not setting ``specified_attributes=1``).
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 29753
|
|
|
|
.. date: 2020-05-02-01-01-30
|
|
|
|
.. nonce: n2M-AF
|
|
|
|
.. section: Library
|
|
|
|
|
|
|
|
In ctypes, now packed bitfields are calculated properly and the first item
|
|
|
|
of packed bitfields is now shrank correctly.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 27646
|
|
|
|
.. date: 2021-02-20-00-09-13
|
|
|
|
.. nonce: HRsmo-
|
|
|
|
.. section: Documentation
|
|
|
|
|
|
|
|
Clarify that 'yield from <expr>' works with any iterable, not just
|
|
|
|
iterators.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 36346
|
|
|
|
.. date: 2020-06-15-10-45-45
|
|
|
|
.. nonce: H0sS_i
|
|
|
|
.. section: Documentation
|
|
|
|
|
|
|
|
Update some deprecated unicode APIs which are documented as "will be removed
|
|
|
|
in 4.0" to "3.12". See :pep:`623` for detail.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43288
|
|
|
|
.. date: 2021-02-21-11-11-53
|
|
|
|
.. nonce: LfTvL-
|
|
|
|
.. section: Tests
|
|
|
|
|
2021-10-06 14:40:09 -03:00
|
|
|
Fix test_importlib to correctly skip Unicode file tests if the filesystem
|
2021-03-01 12:45:40 -04:00
|
|
|
does not support them.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43174
|
|
|
|
.. date: 2021-02-10-14-11-53
|
|
|
|
.. nonce: F9zwXQ
|
|
|
|
.. section: Build
|
|
|
|
|
|
|
|
Windows build now uses ``/utf-8`` compiler option.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43103
|
|
|
|
.. date: 2021-02-02-16-26-44
|
|
|
|
.. nonce: VWeyP_
|
|
|
|
.. section: Build
|
|
|
|
|
|
|
|
Add a new configure ``--without-static-libpython`` option to not build the
|
|
|
|
``libpythonMAJOR.MINOR.a`` static library and not install the ``python.o``
|
|
|
|
object file.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 13501
|
|
|
|
.. date: 2021-01-10-22-25-23
|
|
|
|
.. nonce: g4L-6R
|
|
|
|
.. section: Build
|
|
|
|
|
|
|
|
The configure script can now use *libedit* instead of *readline* with the
|
|
|
|
command line option ``--with-readline=editline``.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 42603
|
|
|
|
.. date: 2020-12-08-19-25-20
|
|
|
|
.. nonce: mXs2dB
|
|
|
|
.. section: Build
|
|
|
|
|
|
|
|
Make configure script use pkg-config to detect the location of Tcl/Tk
|
|
|
|
headers and libraries, used to build tkinter.
|
|
|
|
|
|
|
|
On macOS, a Tcl/Tk configuration provided by pkg-config will be preferred
|
|
|
|
over Tcl/Tk frameworks installed in ``/{System/,}Library/Frameworks``. If
|
|
|
|
both exist and the latter is preferred, the appropriate ``--with-tcltk-*``
|
|
|
|
configuration options need to be explicitly set.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 39448
|
|
|
|
.. date: 2020-01-24-12-54-22
|
|
|
|
.. nonce: k4pv14
|
|
|
|
.. section: Build
|
|
|
|
|
|
|
|
Add the "regen-frozen" makefile target that regenerates the code for the
|
|
|
|
frozen ``__hello__`` module.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43155
|
|
|
|
.. date: 2021-02-10-04-16-51
|
|
|
|
.. nonce: O1tURk
|
|
|
|
.. section: Windows
|
|
|
|
|
|
|
|
:c:func:`PyCMethod_New` is now present in ``python3.lib``.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 41837
|
|
|
|
.. date: 2021-02-28-22-49-46
|
|
|
|
.. nonce: 9fqyXC
|
|
|
|
.. section: macOS
|
|
|
|
|
|
|
|
Update macOS installer build to use OpenSSL 1.1.1j.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43283
|
|
|
|
.. date: 2021-02-21-16-30-10
|
|
|
|
.. nonce: DLBwYn
|
|
|
|
.. section: IDLE
|
|
|
|
|
|
|
|
Document why printing to IDLE's Shell is often slower than printing to a
|
|
|
|
system terminal and that it can be made faster by pre-formatting a single
|
|
|
|
string before printing.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43278
|
|
|
|
.. date: 2021-02-21-15-30-38
|
|
|
|
.. nonce: DMPaWH
|
|
|
|
.. section: C API
|
|
|
|
|
|
|
|
Always put compiler and system information on the first line of the REPL
|
|
|
|
welcome message.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43270
|
|
|
|
.. date: 2021-02-19-14-28-26
|
|
|
|
.. nonce: UKx4XN
|
|
|
|
.. section: C API
|
|
|
|
|
|
|
|
Remove the private ``_PyErr_OCCURRED()`` macro: use the public
|
|
|
|
:c:func:`PyErr_Occurred` function instead.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 35134
|
|
|
|
.. date: 2021-02-18-18-46-42
|
|
|
|
.. nonce: dFpEDT
|
|
|
|
.. section: C API
|
|
|
|
|
|
|
|
Move odictobject.h, parser_interface.h, picklebufobject.h, pydebug.h, and
|
|
|
|
pyfpe.h into the cpython/ directory. They must not be included directly, as
|
|
|
|
they are already included by Python.h: :ref:`Include Files <api-includes>`.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 35134
|
|
|
|
.. date: 2021-02-17-18-51-26
|
|
|
|
.. nonce: YoQdk8
|
|
|
|
.. section: C API
|
|
|
|
|
|
|
|
Move pyarena.h, pyctype.h, and pytime.h into the cpython/ directory. They
|
|
|
|
must not be included directly, as they are already included by Python.h:
|
|
|
|
:ref:`Include Files <api-includes>`.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 40170
|
|
|
|
.. date: 2021-02-16-22-29-39
|
|
|
|
.. nonce: ahHmOo
|
|
|
|
.. section: C API
|
|
|
|
|
|
|
|
:c:func:`PyExceptionClass_Name` is now always declared as a function, in
|
|
|
|
order to hide implementation details. The macro accessed
|
|
|
|
:c:member:`PyTypeObject.tp_name` directly. Patch by Erlend E. Aasland.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43239
|
|
|
|
.. date: 2021-02-16-17-30-16
|
|
|
|
.. nonce: FQqOGz
|
|
|
|
.. section: C API
|
|
|
|
|
|
|
|
The :c:func:`PyCFunction_New` function is now exported in the ABI when
|
|
|
|
compiled with ``-fvisibility=hidden``.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 40170
|
|
|
|
.. date: 2021-02-15-15-06-43
|
|
|
|
.. nonce: ZYeSii
|
|
|
|
.. section: C API
|
|
|
|
|
|
|
|
:c:func:`PyIter_Check` is now always declared as a function, in order to
|
|
|
|
hide implementation details. The macro accessed
|
|
|
|
:c:member:`PyTypeObject.tp_iternext` directly. Patch by Erlend E. Aasland.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 40170
|
|
|
|
.. date: 2021-02-15-13-41-14
|
|
|
|
.. nonce: r2FAtl
|
|
|
|
.. section: C API
|
|
|
|
|
|
|
|
Convert :c:func:`PyDescr_IsData` macro to a function to hide implementation
|
|
|
|
details: The macro accessed :c:member:`PyTypeObject.tp_descr_set` directly.
|
|
|
|
Patch by Erlend E. Aasland.
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
.. bpo: 43181
|
|
|
|
.. date: 2021-02-11-11-37-14
|
|
|
|
.. nonce: ydv33S
|
|
|
|
.. section: C API
|
|
|
|
|
|
|
|
Convert :c:func:`PyObject_TypeCheck` macro to a static inline function.
|
|
|
|
Patch by Erlend E. Aasland.
|