On PyPy (specifically, the wheel with _speedups.pypy36-pp73-x86_64-linux-gnu.so), when using markupsafe.escape(), this unicode below is incorrectly escaped;
Input: 'https://x?<ab c>&q"+%3D%2B"="fö%26=o"'
_native:
'https://x?<ab c>&q"+%3D%2B"="fö%26=o"'
_speedups (on pypy):
'https://x?<ab c>&q"+%3D%2B"="fö%26=o'
This was caught while testing PyPy support for synapse, in matrix-org/synapse#9123, in which one of the tests hooked behind here.
I am no expert in C, but I have a feeling one of the Unicode APIs used in _speedups.c is either being used incorrectly, or has an implementation mismatch compared to cPython
On PyPy (specifically, the wheel with
_speedups.pypy36-pp73-x86_64-linux-gnu.so), when usingmarkupsafe.escape(), this unicode below is incorrectly escaped;Input:
'https://x?<ab c>&q"+%3D%2B"="fö%26=o"'_native:'https://x?<ab c>&q"+%3D%2B"="fö%26=o"'_speedups(on pypy):'https://x?<ab c>&q"+%3D%2B"="fö%26=o'This was caught while testing PyPy support for synapse, in matrix-org/synapse#9123, in which one of the tests hooked behind here.
I am no expert in C, but I have a feeling one of the Unicode APIs used in
_speedups.cis either being used incorrectly, or has an implementation mismatch compared to cPython